Skip to Content
Author's profile photo Werner Wolf

Winning the InnoJam & becoming 3rd in DemoJam – The technical side

InnoJam as pre-event of the TechEd means that you start on Sunday morning to design within a 6 hour design thinking session a solution fitting to the motto Better Cities – Better Lifes and then have another 24 hours to develop this and prepare a presentation that convinces the jury that you have to be the winner. Because this gives you a place to present at the TechEd DemoJam the next day.

Wim Snoep has written a great blog from the team’s point of view:

Winning the InnoJam & becoming 3rd in DemoJam. Team Park-IT.

In this Blog I would like to give you some more insights on what was required to get this story up and running and the objects that were finally built.

We had there two different types of users working with the system:

  • Larry, the consumer in his car with his Windows 8 tablet looking for a cheap place to park
  • Greg, the mayor in the city hall who wants to have on his iPad KPI’s, Dashboards and a view on his financial situation and satisfaction of the customers

SAP_11Nov2012__3354.jpg

So, 24 hours and even less is not much to build such a complete scenario as the team wanted to have and not only a little UI prototype since you need also quite some time to create and prepare the presentation and probably you want to have one or the other hour of sleep in the night.

The decision to take Business ByDesign and its SDK, the Business ByDesign Studio helped here to jump start and get the required objects quickly set up.

As Wim stated: „We decided for a backend which was easy to create, and easy to open up, since we had limited development capacity in the team. Chosen was for Business ByDesign.”

But at the end it was much more than only the backend:

Object List of the Business ByDesign Studio Solution

Two associated Business Objects, one for master data and the other one for transactional data

Three lines of business logic coding

A complete set of UI with Object Work Lists, Detail screens and navigation between them and also the Object Value Selector to pick a parking place from a list.

Queries

Data Sources and reports

WebServices for the communication with the Windows 8 tablet

Data Migration (File Upload) to get the 2000 booking records into the system

Business Objects

Parkingplace

The parking places are stored in this master data object with address, cost, location and number of spaces:

import AP.Common.GDT as apCommonGDT;

businessobject Parkingplace {

        // Parking Place Master Data

        //

        [AlternativeKey] element ID       : ID;

        element Nr_Of_Spaces              : IntegerValue;

        element Address                   : Text;

        element Cost                      : FloatValue;

        element Validation                : Indicator;

        element Nr_Of_Spaces_Open         : IntegerValue;

        element Longitude                 : Text;

        element Latitude                  : Text;

            

}

Parkingrecord

The booking records are stored in a 2nd Business Object with an association to the Parkingplace object including the satisfaction rating:

import AP.Common.GDT as apCommonGDT;

businessobject Parkingrecord {

        // Booking Record

        //

        [AlternativeKey] element ID       : ID;

        element Satisfaction              : IntegerValue;

        element Reservation               : Indicator;

        element PaymentAmount             : FloatValue;

        element DateOfParking             : Date;

        element TimeIn                    : Time;

        element TimeOut                   : Time;

        element ExpectedStay              : FloatValue;

        element Validated                 : Indicator;

        element ParkingplaceID            : ID;

        association Parkingplace to Parkingplace;

}

UI’s

Parkingplace

A complete UI scenario with navigation was created with the UI Wizard:

Sol1.jpg

To be used with an iPad, the UI’s must be tagged in the UI Designer with Tablet:

UITag.jpg

The same was done for the second object Parkingrecord.

The resulting UI on the iPad rendered with the iPad Player downloadable from the Apple App Store:

IMG_0010.PNG

IMG_0011.PNG

Analytics

In a first step a datasource must be created for the business object. The wizard in ByDesign Studio lets you select the business object, the required fields including fields from associated objects

/wp-content/uploads/2012/11/ana1_158813.jpg/wp-content/uploads/2012/11/ana2_158814.jpg

Then the reports are defined and the result on the iPad looks like this:

IMG_0012.PNG

WebServices

As consumer device a Windows 8 tablet was used. To have a complete free design, the app was built with native programming in C#. To communicate with the business objects, meaning to query or to create or update data, WebServices have been created. Also here the ByDesign Studio provides a wizard to select the required fields and define the service operation like query or create:

/wp-content/uploads/2012/11/ws1_158816.jpg  /wp-content/uploads/2012/11/ws2_158817.jpg

The WSDL file from these services is then used in the C# project for the consumer tablet UI:

WSDL.jpg

In the C# project an access to e.g. the query looks like:

namespace Win8AppTeamp.Model

{

    public class ParkitServiceInvoker

  {

        public async Task<List<Location>> GetLocations()

     {

            var bind = new HttpsTransportBindingElement();

            bind.AuthenticationScheme = System.Net.AuthenticationSchemes.Basic;

            CustomBinding custBinding = new CustomBinding(bind);

            EndpointAddress managedServiceOrderInEndpoint = new EndpointAddress(https://my300178.vlab.sapbydesign.com/sap/bc/srt/scs/sap/yy6y5yvvey_manageparkingplace?sap-vhost=my300178.vlab.sapbydesign.com);

            var client = new ParkitService.Y6Y5YVVEY_ManageParkingplaceClient(custBinding, managedServiceOrderInEndpoint);

            client.ClientCredentials.UserName.UserName = ;

            client.ClientCredentials.UserName.Password = …;

            var res = await client.QueryByElementsAsync(new ParkitService.ParkingplaceQueryByElementsSimpleByRequestMessage_sync());

            return res.ParkingplaceQueryByElementsSimpleByConfirmation_sync.Parkingplace.Select(x => new Location(double.Parse(x.Latitude.Value), double.Parse(x.Longitude.Value))).ToList();

           

         }

   }

}

/wp-content/uploads/2012/11/win8_158819.jpg

Data Upload

To have an at leastbit realistic data basis for the reporting, the parking record business object was filled with ~2000 records, which were too much to enter them manually. So we created with the ByDesign Studio a file upload interface, our standard data migration way for own objects.

The wizard guides you through all steps like selection of the required fields:

FileInput.jpg

To sumarize this at the end, a lot of different content was created using Business ByDesign Studio, mainly built using the wizards, not much coding was required. This helps the great Park-IT team to build the complete end-to-end story in the given timeframe.

Assigned Tags

      6 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Thomas Schneider
      Thomas Schneider

      Congratulations!

      Author's profile photo Former Member
      Former Member

      Excellent detailed blog about Parking Shark's backend Werner. Thanks for posting this, and thanks for all your assistance in helping us get the app live!

      Author's profile photo Christian Happel
      Christian Happel

      Another great example of how easy the ByDesign studio is!

      Author's profile photo Witalij Rudnicki
      Witalij Rudnicki

      Thanks for informative and well structured blog! It would be great to have more like this.

      Author's profile photo Ralf Baumann
      Ralf Baumann

      Congratulations. ByD Studio rocks...

      Author's profile photo Andreas Eissmann
      Andreas Eissmann

      Great detailed blog Werner! Now every one at TechEd knows ByDesign 🙂 Great job!

      Andreas