It’s been just over a month since we announced the release of SUP 2.0 at Sapphire NOW, and the product has been available through the SAP Marketplace and Sybase Product Download Center. 2.0 includes the debut of the Hybrid Web Container , a native application for the iOS, BlackBerry, Windows Mobile, and (later in Q2) Android platforms which connects to SUP infrastructure, and runs web applications securely on an embedded browser. It enables server-initiated push notifications and application scenarios, as well as end-user initiated applications.
It’s been a busy month, so I’ve summarized some of the key questions I’ve answered in recent conversations to share some of the new functionality, and explain why we’re so excited about SUP 2.0.
Why are we so excited about SUP 2.0?
What CSS is used? Is there a standard look and feel across devices, or is each device specific?
We’re shipping jQueryMobile out of the box. Both the .js and css files. This means that there is a single look-and-feel across devices, and that the navigation will be consistant as well. Within jQueryMobile, there are a number of ‘Themes’: a, b, c, d, etc., which are color schemes developers can choose, based on their preferences.
What if you want device-specific look and feel?
So the CSS files are packaged as part of the web app?
First let’s explain where it’s coming from. Here is the basic development process:
(1.) You open the Eclipse tooling, create a mobile project, and connect to a data source. This could be direct to a database, a set of BAPIs, web services, REST services.
(2.) Drag-and-drop tables or views from a data source to the model diagram. These are the Mobile Business Objects that everyone has heard about. This is where you define exactly what values and objects will be available on the SUP cache, and how that cache data is partitioned to improve performance. Up to this point is pretty much the same, whether you’re writing a native app, or a Container app.
(3.) This part is new and improved, and this is where the HTML5, JS, and CSS code comes from. In the Eclipse tooling, you get a screen designer. In the screen designer, you can drag and drop MBOs into the screenflow and auto-generate list–>detail screens. You can add some Menu Items buttons and add Query or Operation actions.
(4.) The screen designer is also where you can manage some of the features that are distinctly ‘SUP’. One of the key features is the ability to make a screenflow ‘Server Initiated’ and/or ‘Client Initiated’. This means that you can have some screens defined, for example: an Approval List screen, and Approval Detail screen. You can use the designer to set two entry points to the app. One could be ‘Client Initiated’, which means that the user opens the Container, selects the Container app, and goes to a ‘Start Screen’, from which you run a query, and point to the List screen. The other could be ‘Server Initiated’, which means that an engine on the server recognizes a business process event, executes a query and pulls a set of values, packages them as a message, and pushes the message to the Container on the device. That message on BlackBerry and Windows Mobile devices is opened from a plugin in the device Inbox. On iOS, because all the apps are sandboxed, it’s in an inbox in the standalone Container app. Either way, the application can be defined as a single package of screen flows. This is one of the key defining features of the container, and for development, it’s nice to know that the screens can be re-used for multiple flows and only a single package is needed.
Yes. A good example is in an Inventory Lookup app that one of our partners, Liquid Analytics, built, and it’s being included in the 2.0 release as sample code, so everyone will have access to it. Instead of using the MenuItems in the navigation bar, they wanted to have larger buttons in the center of the screen. So they added an HTML link, styled it, and pointed to the function call in the API for the Online Request for inventory data.
How do they access the data that comes from the back end?
We have a value called the ‘MessageValueCollection’. The MessageValueCollection contains the latest values returned from an online request and cached. It can be traversed by key names or indexes. Keep in mind, if you generate an app and run it straight out of the box, all these values are already pre-bound to the screen elements, so you don’t have to know anything about the MessageValueCollection in order to get data to the screen, or input back to the server. But the MessageValueCollection is how you get the data for sub-lists on a screen, or dynamically work with a result set on the device. It’s really ‘access to our WebStorage’. I like to think of it as similar to a FetchedResultController in Objective-C, if you’re familiar with Core Data. It’s not the same, but the results interface isn’t too different.
Ok, so can you edit the HTML directly? Where are the boundaries of where you can customize?
Is there anything else we should be aware of?
Android support in the Container is coming later in Q2, as a patch to 2.0, so that functionality will be available to SUP 2.0 customers.
Where can I get a download?
A public developer edition is not yet available, but we are working to upgrade our processes to be more developer-friendly! We will keep the community posted asap. In the meantime, please go through the typical SAP and Sybase channels @ SAP Marketplace or SPDC.