What I'd like to discuss is how have you been architecting this & what issues have you been hitting? I could imagine we could turn on the SDO services for all pre-existing AMs and VOs built for our existing ADF web applications, but I don't think that really considers the mobile use case very well, a VO built for a web page may include too much stuff for a mobile page who is also bandwidth and memory limited. As such I can also imagine a scenario where we would create separate AMs and VOs for the mobile use case, backed by the same EOs of the ADF web application.
As usual I like to turn things a bit upside down to pose the same question. I typically look at architecting an ADF Mobile app in the following two steps.
1. First you should consider what your client-side app needs to do. What functionality and data are needed on the device, and design out the screens and task flows in a wireframe. Then you need to consider whether you need to cache data for performance and/or offline requirements. These would help you to determine how you want to retrieve data from the server. Of course there are other considerations like what device services you would need to access, what form factors (smartphone vs. tablet) you would need to support, and what mobile OS do you want to support, but these are not directly related to data services.
2. Once you figured out what client app needs to do and what data/how data should be retrieved, then you determine how to get data from server-side components, be it ADF BC, WS hosted by SOA Suite, REST interface exposed by TopLink, etc. For the purpose of this group, most likely your data would be accessed through Service Interface via ADF BC.
a. Note that ADF Mobile supports SOAP, REST/XML with XSD, and REST/JSON.
The reason you want to approach this way is, for example, if you decide to cache data, then you would want to design your WS to retrieve all the data you need at once. If the app is connected only, then you would want to retrieve data based on the context/functionality of your screens in the app.
Having said that, the most likely outcome of step 1 and 2 is that you would want to configure a set of VOs/AMs that are optimized for mobile app access, and also expose only the service interfaces needed by mobile apps. The goal is to keep the interactions and data structure as simple as possible, so you can focus on delivering a great mobile user experience in the app.
Speaking of simplicity, so a follow up question to Chris M’s is, well, is the ADF BC SDO interfaces too complex, just right, or insufficient to properly support mobile app access? Even if you have not done ADF Mobile development, one way you can provide some type of feedback is to try to consume ADF BC SDO WS in another ADF app using the WS Data Control. Is it pretty easy to invoke SDO-based WS in your app, or you have to jump through hoops just to set the parameters and retrieve data?
I have some opinions, but would be interesting to hear what everyone says, especially the ADF Mobile Beta participants in this group.
Thanks,
Senior Principal Product Manager
Mobile Application Development Framework
Oracle Application Development Tools
650-506-2271 (Office)
510-282-0369 (Mobile)
Check Oracle MEAP, Blogs (for latest updates), and Demos (Hint: open on your mobile phone)
--
This was something Bex mentioned in our interview. You shouldn't just plop a web service interface on to your existing AMs, as the user controls, screens and workflows supported by mobile devices can be significantly different from those supported by the standard KVM setup we usually target. Even an app that was already targeted for mobile browsers may have VOs that don’t necessarily work for a native mobile app.
One question I have is, is it possible to set things up so that 2 different applications can share the same set of entity objects and association objects, but then have different VOs and AMs built on top of those? I've done similar things in the past with other development frameworks by linking parts of the project in as external repositories within the version management system (svn). Would JDeveloper/ADF support setting up something like that? Then at least you could reuse the business validations and UI hints implemented in the EOs, but still customize the VOs and AMs to support the workflows being implemented.
Stephen Johnson
Manager, Systems Architecture
Integretas, Inc.
From: adf-met...@googlegroups.com [mailto:adf-met...@googlegroups.com] On Behalf Of Chris Muir
Sent: Wednesday, October 24, 2012 10:06 PM
To: adf-met...@googlegroups.com
Subject: [ADF EMG] Architecting for ADF Mobile - ADF BC SDO web services
Phew, now that we're out of the busy OOW period and all the exciting announcements, it would be good to get back to the roots of this group and discuss architecture.
--
Thanks Steve. I knew I could use different view criteria at different times, but I wasn’t aware that the declarative mode could actually dynamically adjust the columns being retrieved by the view object. That could make a big difference as I can see the need for mobile apps to display a reduced data set from what a standard app provides.
Stephen Johnson
Manager, Systems Architecture
Integretas, Inc.
--
--
Also adding to Shay’s comments. As you know, there are a lot of other HTML5 Hybrid mobile app development framework out there that utilizes a local DB. You would essentially be writing JavaScript code to interact with an unencrypted database on the device. With ADF Mobile, we licensed SQLite Encryption pack so the DB file is secured with a password, and you would interact with the local DB using the JDBC APIs in Java as Shay listed below. No other HTML5-based hybrid framework can support anything similar as far as I know.
Several of the partners/customers participated in ADF Mobile beta testing had also successfully implemented mobile apps using these APIs. Mobile DB structure typically/should be relatively simple, and JDBC APIs should be sufficient to handle DB access.
Nevertheless, one of the beta partners did provide some useful feedback around the need to create some interface to common DB operations. Simplicity is key here – we should only support operations needed for a local single user SQLite DB, without all the overhead and complexity needed for server-side DB access.
By the way, until that becomes available, for all of you Java experts out there, I am sure someone can contribute some sample code/libraries that can be shared by others for DB access. Anyone interested? J
Thanks,
Senior Principal Product Manager
Mobile Application Development Framework
Oracle Application Development Tools
650-506-2271 (Office)
510-282-0369 (Mobile)
Check Oracle MEAP, Blogs (for latest updates), and Demos (Hint: open on your mobile phone)
From: Shay Shmeltzer
Sent: Thursday, October 25, 2012 9:56 AM
To: adf-met...@googlegroups.com
--
Hi, Chris, I like the discussions around exposing ADF BC to mobile apps - this is the exactly the type of discussion we should have.
However, at the risk of taking it to a completely different direction, here is a blog article that might be of interest, since SOA suite is brought into the discussion: https://blogs.oracle.com/fusionmiddleware/entry/lab_submit_an_expense_report.
I had been working with the SOA teams to extend Oracle apps to mobile devices via SOA Suite for a while now, and there are some best practices around that. It's useful for integrating Oracle apps and other types of back-ends, and I believe SOA Suite has ADF BC support as well, correct?
be carefull with sdo and adf bc especially in combination with oracle soa suite and adf , there are still a lot of bugs which need to be solved first. I know some projects which needed to stop with adf bc sdo ( architect demanded sdo ) and they moved to JPA SDO with eclipselink and this worked perfectly in ps5 with soa suite and adf. and you have the choice to use the fast ejb or ws sdo interface.
but you need to have a jpa,ws , eclipselink expert to make this a success.
thanks
Hi, Tapash:
1. This is a pretty hot area for mobile right now. One approach is to use VPN, although it can still be considered as security risk because your crendential/point of authentication is on a (easily can be lost) mobile device. Using a multi-tiered network architecture (mobile device -> web server proxy (in DMZ) -> App server/Oracle apps) is a common approach but many IT shops (including Oracle) does not allow server in DMZ to go inside the corporate network. BlackBerry Enterprise Server solved this by using a NOC-based infrastructure, and a few of the MDM vendors also have similar infrastructure, where only trusted mobile devices can access the corporate network. We are actively engaging these MDM vendors, as well as having internal discussions with Oracle Idm team, on recommendations/integrations to solve this. Let me know if you are looking for recommendation for this or if you have already been working with some vendors/solutions in this area, and we can discuss how to meet the security requirements.
2. On the EBS SOA gateway, it is based on Oracle SOA Suite anyways. As far as ADF Mobile certification is concerned, for SOAP-based web services, we focus on certifying against ADF BC/SDO based and SOA Suite-based SOAP web services. Both are valid and the choice comes down to what backend app(s) you are connecting to. Of course ADF Mobile is designed to be able to generically support standard SOAP or REST services, but as I am sure everyone is aware, not all WS are the same and compatibility is not guaranteed. If there are any specific type of WS/backend we should add to our certification list, please let me know.
Thanks,
Senior Principal Product Manager
Mobile Application Development Framework
Oracle Application Development Tools
650-506-2271 (Office)
510-282-0369 (Mobile)
Check Oracle MEAP, Blogs (for latest updates), and Demos (Hint: open on your mobile phone)