Skip to Content

Well ok, not quite Hello World as that really would be a little too basic (even for me) but essentially, this is my first “from scratch” Movilizer app.


So, what have I built?  A simple app that lets you view some text, take a picture or capture your location co-ordinates and that is about it.  It isn’t particularly complicated (or useful):

The point is I built this in a matter of minutes (see below) and it will deploy and run on ~8 device platforms without me having to change a single line of code, including capturing the images and using the device’s GPS (where these features are supported on the platform of course – they won’t work on an old Nokia feature phone for example.)  I remember the build once run anywhere promise and the reality from early Sybase Unwired days…

So How Did I Build It?

There are two general ways (at least from within the world of SAP) to begin developing mobile solutions with Movilizer:

  • Via the Movilizer Cloud Portal – a web based build environment exists to allow you to quickly put together Movelets that you can then push out to your chosen devices and test
  • Using full ABAP – “proper” development in SE80 on an SAP system that is registered with and can communicate with the Movilizer Portal (it is important to note that Movilizer solutions can be supported by many different backend systems but of course as this is SCN I am focusing on SAP!)

For this initial foray, I’m using the first option as it is quicker and easier for me to be productive.  As with anything, it is horses for courses and the level of complexity and desired functionality would typically dictate the chosen approach.  To give some more context, it is important to understand what you are actually building, even if you choose ABAP as your development environment.  As I mentioned in my first post in this series, ultimately a Movelet is represented by an XML payload.  Here is the generated XML for the above Movelet:


<?xmlversion="1.0"?>
<movilizer:MovilizerMovelet xmlns:movilizer="http://movilitas.com/movilizer/v11" moveletKey="e8fce1ab-9d9e-45e3-bfd8-95b428b9916a" namespace="tct" privateNamespace="true" name="HelloMovilizer" moveletType="multi" metaMoveletType="none" initialQuestionKey="1" transactional="false" validTillDate="2014-05-31T11:00:00.000Z" priority="1" syncPriority="none" visible="true">
  <movilizer:question key="1" title="Hello World!" type="0" backNavigationAllowed="true" sortAnswersByClientKey="false" portalMayDelete="false" portalMayEdit="false" portalMayMove="false">
    <movilizer:answer key="#1_1" nextQuestionKey="2" position="1" action="none" dummyAnswer="false" portalMayDelete="true" portalMayEdit="true" portalMayMove="true"/>
    <movilizer:text>This is the first screen and this is some text in it!</movilizer:text>
  </movilizer:question>
  <movilizer:question key="2" title="Choose an option" type="6" backNavigationAllowed="true" sortAnswersByClientKey="false" portalMayDelete="false" portalMayEdit="false" portalMayMove="false">
    <movilizer:answer key="#2_1" nextQuestionKey="3" position="1" action="none" dummyAnswer="false" portalMayDelete="true" portalMayEdit="true" portalMayMove="true">
      <movilizer:text>Take a Picture</movilizer:text>
    </movilizer:answer>
    <movilizer:answer key="#2_2" nextQuestionKey="4" position="2" action="none" dummyAnswer="false" portalMayDelete="true" portalMayEdit="true" portalMayMove="true">
      <movilizer:text>Where are you?</movilizer:text>
    </movilizer:answer>
    <movilizer:answer attributeType="9" key="#2_4" nextQuestionKey="END" position="3" action="none" dummyAnswer="false" portalMayDelete="true" portalMayEdit="true" portalMayMove="true">
      <movilizer:text/>
    </movilizer:answer>
    <movilizer:answer key="#2_3" nextQuestionKey="END" position="4" action="none" dummyAnswer="false" portalMayDelete="true" portalMayEdit="true" portalMayMove="true">
      <movilizer:text>Leave app</movilizer:text>
    </movilizer:answer>
  </movilizer:question>
  <movilizer:question key="3" title="New screen" type="10" backNavigationAllowed="true" sortAnswersByClientKey="false" portalMayDelete="false" portalMayEdit="false" portalMayMove="false">
    <movilizer:answer key="#3_1" nextQuestionKey="END" position="1" action="none" dummyAnswer="false" portalMayDelete="true" portalMayEdit="true" portalMayMove="true"/>
  </movilizer:question>
  <movilizer:question key="4" title="Where are you?" type="20" backNavigationAllowed="true" sortAnswersByClientKey="false" portalMayDelete="false" portalMayEdit="false" portalMayMove="false">
    <movilizer:answer key="#4_1" nextQuestionKey="END" position="1" action="none" dummyAnswer="false" portalMayDelete="true" portalMayEdit="true" portalMayMove="true"/>
  </movilizer:question>
</movilizer:MovilizerMovelet>



It may not be obvious straight away, but this code is declaring the screens, their content and the navigation around them.  In some ways, it is not too dissimilar to using declarative XML views in UI5, however in many ways it is very different.  One of the key differences is how the apps or Movelets are structured and how the “build once, run anywhere” promise is delivered.  Deep details around this need a separate post to really get some decent explanations across but it is important to understand that the Movelets you create run in a client app on the target device.  In this way, there is some similarity to SMP Hybrid app’s – you aren’t building and deploying a complete custom app on your target platform, instead you only install the Movilizer client app once and then the deployment of Movelets is managed via the Movilizer cloud platform.  This of course has both pro’s and con’s.


Here is another video of me creating the above app, in just under 4minutes.  Of course, creating a ‘proper’ fully featured & working suite of app’s won’t be this quick:


This is really just a very thin scratch of the Movilizer surface.  With a future post I hope to show how this all fits into the world of the ABAP programmer, and just how you can create quite complex and feature rich mobile solutions using just ABAP code…

To report this post you need to login first.

1 Comment

You must be Logged on to comment or reply to a post.

  1. Uday Kumar Kanike

    Hi Gareth,

                   Its a nice blog. I am looking for more information on Movilizer development. Can you please share some information or material on Movilizer developement in ABAP. More blogs on this topic will help a lot.

    Thanks

    Uday

    (0) 

Leave a Reply