SlideShare a Scribd company logo
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
REAL-LIFE ORACLE MAF
Luc Bors eProseed NL
Oracle Open World 2015
San Francisco
October 26th 2015
Things You Don’t Learn from Oracle’s
Developers Guide
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |2
WHO AM I ?
•  Luc Bors
•  Managing Partner
•  eProseed
•  Oracle Platinum Partner
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
PROGRAM AGENDA
Introducing Oracle MAF
UI Development
Device Properties
Device Interaction
REST JSON : A Sample
1
2
3
4
5
3
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |4
INTRODUCING MAF
•  MAF is a hybrid-mobile framework
– Cross Platform Mobile Development
– Visual and Declarative Development	
– Leverage Java Skills
– Simplified Device Feature and
Services Access
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |5
MAF RUNTIME ARCHITECTURE
•  Mobile Device
– HTML
– CSS
– Java Script
– Java
– Cordova
– SQLite
– Push Handler
– Access Control
•  Server Side
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
PROGRAM AGENDA
Introducing Oracle MAF
UI Development
Device Properties
Device Interaction
REST JSON : A Sample
1
2
3
4
5
6
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |7
TIP TIME
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
DON’T MESS UP !!
•  Read the installation
guidelines carefully
•  Install JDeveloper with jdk1.7
8
Cable Mess Frustration - photo by: Jonathan Arehart
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |9
NO LONGER IN THIS PRESENTATION
•  Gestures; Pull to Refresh
•  Gestures; Swipe to Reveal
•  In MAF 2.2 this is standard!
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |10
NO LONGER IN THIS PRESENTATION
•  Toggle Springboard
•  In MAF 2.2 this is (almost)
standard!
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |11
TOGGLE SPRINGBOARD
•  What is the Default
toggle behavior ?
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |12
TOGGLE SPRINGBOARD
•  What is the Desired
toggle behavior ?
<amx:commandLink id="cl1" actionListener="#{bindings.toggleSpringboard.execute}”

styleClass="springboard-icon" shortDesc="Springboard Link”>

<amx:image id="i1" source="/images/springboard.svg" 

shortDesc="Springboard Image"/>

</amx:commandLink>
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |13
DRAG AND DROP DEVELOPMENT
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |14
DRAG AND DROP DEVELOPMENT
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |15
DRAG AND DROP DEVELOPMENT
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |16
CREATE FRAGMENTS
•  Create Fragments that
can be re-used
•  Fragments can have
styling
•  Assign Attribute values
when Fragment is used
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |17
USE FRAGMENTS
•  Drop fragment on
page
•  Assign Attribute
values
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |18
TO DND OR NOT TO DND ?
•  The hard work
– Create page fragments first
– Create bindings manually
– Assign attribute Values
•  VS
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |19
MAKE IT EVEN MORE BEAUTIFUL
•  Use the tools !
•  Chrome Developer tools
•  Safari Developer tools
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |20
SKINNING IOS APPS
•  Safari
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |21
SKINNING IOS APPS
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |22
SKINNING ANDROID APPS
•  Chrome
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |23
SKINNING ANDROID APPS
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |24
TIP TIME
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |25
THE MASONRY LAYOUT
•  Works with mobileAlta-v1.4
•  You can disable the drag and drop behavior on the
masonry layout items.
•  Use the undocumented style class in MAF 2.2 for
this is amx-masonryLayout-noDrag
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
PROGRAM AGENDA
Introducing Oracle MAF
UI Development
Device Properties
Device Interaction
REST JSON : A Sample
1
2
3
4
5
26
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |27
DEVICE PROPERTIES
•  Many Device properties
are available
•  Do what is possible, avoid
what cannot be done
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |28
LOADING IN THE BACKGROUND
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
HOW IT WORKS
•  Check network connectivity
– #{deviceScope.hardware.networkStatus}
– "wifi", "2g", "unknown", "none”, etc etc
•  Start background thread
– Load Images in background
29
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |30
LOADING IN THE BACKGROUND
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |31
MULTIPLE BACKGROUND THREADS
•  You can actually use multiple background
threads
•  Can be refreshed individually
•  AdfmfJavaUtilities.flushDataChangeEvent()
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |32
HOW TO START IOS SIMULATOR ?
•  Deploy app from within JDeveloper
•  Start from within Xcode
•  Start from Commandline
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
PROGRAM AGENDA
Introducing Oracle MAF
UI Development
Device Properties
Device Interaction
REST JSON : A Sample
1
2
3
4
5
33
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
DEVICE INTERACTION
•  The Device
Datacontrol
•  Drag n Drop support
•  Attributes as fields
•  Operations as buttons
•  Or as a link
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
BEHIND THE SCENES
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
CAMERA INTERACTION
•  Take a picture ……………
•  …… or get one from the Library
DeviceManager.CAMERA_SOURCETYPE_PHOTOLIBRARY
import oracle.adf.model.datacontrols.device;
DeviceManager dm = DeviceManagerFactory.getDeviceManager();
if (dm.hasCamera){
dm.getPicture(
100,
DeviceManager.CAMERA_DESTINATIONTYPE_FILE_URI,
DeviceManager.CAMERA_SOURCETYPE_CAMERA,
false,
DeviceManager.CAMERA_ENCODINGTYPE_PNG,
200,
200);
}
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
UPLOADING YOUR PICTURE
•  REST/JSON à Needs a String, not an image
37
DeviceManager dm = DeviceManagerFactory.getDeviceManager();
String myImageDataBase64 = dm.getPicture(50,
DeviceManager.CAMERA_DESTINATIONTYPE_DATA_URL,
DeviceManager.CAMERA_SOURCETYPE_CAMERA,
false,
DeviceManager.CAMERA_ENCODINGTYPE_JPEG, 200, 200);
}
myImageDataBase64 = URLEncoder.encode(myImageDataBase64,
java.nio.charset.StandardCharsets.UTF_8.toString());
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
LOCAL NOTIFICATIONS
•  Declarative
– DeviceFeatures DC
•  JavaScript API
– adf.mf.api.localnotification
•  Java API
– adfmfContainerUtilities
38
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
CREATING A LOCAL NOTIFICATION
•  AdfmfContainerUtilities.addLocalNotification(options)
•  AdfmfContainerUtilities.cancelLocalNotification(notificationId);
39
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
REPEATING LOCAL NOTIFICATIONS
40
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |41
TIP TIME
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |42
CANCELING REPEATING NOTIFICATIONS
•  Cancelling a notification means that the notification is
COMPLETELY cancelled even if it was scheduled to
fire every DAY
•  Create a new one after cancelling
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
PROGRAM AGENDA
Introducing Oracle MAF
UI Development
Device Properties
Device Interaction
REST JSON : A Sample
Some More Tips
1
2
3
4
5
43
6
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |44
OVERVIEW OF A MAF SOLUTION
JSONBeanSerializationHelper
POJO Datacontrol Data Objects
Data Objects
Data ObjectsDataArray
REST Adapter
MAFBindingLayer
RemoteRESTJSON
R
E
S
T
C
o
n
n
e
c
t
i
o
n
MAF App
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |45
CLASS HIERARCHY
RestCallerUtil
FlightCustURIs
JsonArrayToFlightPassengerListArray JsonArrayToFlightDetailsArray
FlightPassengerListArray FlightDetailsArray
FlightPassengerListEntity FlightDetailsEntity
FlightPassengersDC
CustomerComplaintEntity
FlightsRestService
CustomerComplaintObject
CustomerComplaintObjectToJsonObject
CustomerRestService
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |46
RESTSERVICE ADAPTER DOES THE CALL
•  setRequestType
– REQUEST_TYPE_GET à to GET flights and Passengers
– REQUEST_TYPE_POST à to POST a complaint
•  setConnectionName: To use the correct REST-connection
•  setRequestURI à What is it that we want to do
–  /flights/KL34
–  /flights/KL34/passengerlist
–  /complaints
•  NOTE: Request URI are bundled in a Custom Class (FlightCustURIs)
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |47
REST JSON FROM SOA SUITE, OSB OR MCS
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |48
USE SOAP UI “CLOUD SERVICE”
{ "FlightCode": {
"CarrierCode": "KL",
"FlightNumber": "34"
},
"FlightDate": "2015-03-07T09:50:00.000+01:00",
"TotalNumberOfPassengers": "22",
"Passengers": [
{
"FirstName": "Diana",
"LastName": "Woodstock",
"Country": "UK",
"FrequentFlyerNumber": "BB123332",
"Seat": "2B"
},
{
"FirstName": "William",
"LastName": "Simon",
"Country": "US",
"FrequentFlyerNumber": "KK9182673",
"Seat": "4C"
},
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |49
TIP TIME
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
WHERE ARE MY FIFILES ?
•  Finding the actual log file for an app, particularly since
iOS 8 and Xcode 6, is a somewhat tricky
•  Logfile
– application.log
50
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
THERE ARE MY LOGFILES !
•  iOS simulator content
– /Users/lucbors/Library/Developer/CoreSimulator
51
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
THERE ARE MY DEVICES !
•  iOS simulator content
– /Users/lucbors/Library/Developer/CoreSimulator/Devices
52
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
THERE IS MY DEVICE !
•  iOS simulator content
– /Users/lucbors/Library/Developer/CoreSimulator/Devices
– Use ls -lt
53
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
THERE IS MY APPLICATION !
•  iOS simulator content
– /Users/lucbors/Library/Developer/CoreSimulator/Devices/
<device>/data/Containers/Data/Application
54
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
THERE IS MY LOGFILE !
•  iOS simulator content
– /Users/lucbors/Library/Developer/CoreSimulator/Devices/
<device>/data/Containers/Data/Application/<app>/Documents/
logs
55
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
WHERE ARE MY LOGFILES ?
•  Change Location
56
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |
IN MAF 2.2 THINGS CHANGED
•  Logfile is automatically redirected to the JDeveloper Console
57
Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |58
SUMMARY
•  Many Options to Develop
•  Many Features to Use
•  Highly Configurable
•  Use Common Patterns
•  Think Outside of the Box
•  Use other Tools to Help you
Real Life MAF (2.2) Oracle Open World 2015

More Related Content

PDF
ADF Mobile: 10 Things you don't get from the developers guide
PPTX
Real life-maf-2015
PDF
Reaching out from ADF Mobile (ODTUG KScope 2014)
PDF
Real life-maf-2015-k scope-final
PDF
ADF Essentials (KScope14)
PDF
Oracle MAF real life OOW.pptx
PDF
MAF push notifications
PPTX
Sling Models Overview
ADF Mobile: 10 Things you don't get from the developers guide
Real life-maf-2015
Reaching out from ADF Mobile (ODTUG KScope 2014)
Real life-maf-2015-k scope-final
ADF Essentials (KScope14)
Oracle MAF real life OOW.pptx
MAF push notifications
Sling Models Overview

What's hot (20)

PPTX
AEM 6.0 - Author UI Customization & Features
PDF
Cross-platform mobile apps with Apache Cordova
PPTX
PROGRAMMING IN JAVA- unit 4-part II
PPTX
Mastering the Sling Rewriter
PDF
Python Ireland Nov 2009 Talk - Appengine
PDF
Server Side JavaScript on the Java Platform - David Delabassee
PDF
slingmodels
PDF
Modern JavaScript, without giving up on Rails
PPTX
User interface customization for aem6 circuit
PPTX
AEM and Sling
PPTX
Building Creative Product Extensions with Experience Manager
PDF
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
PDF
Moving complex enterprise ecommerce systems to the cloud
PDF
User Interface customization for AEM 6
PDF
AEM 6.1 User Interface Customization
PDF
Apache Cordova 4.x
PPTX
Introduction to Sightly and Sling Models
KEY
jQTouch – Mobile Web Apps with HTML, CSS and JavaScript
PDF
Introduction to Usergrid - ApacheCon EU 2014
PPTX
React Native: Introduction
AEM 6.0 - Author UI Customization & Features
Cross-platform mobile apps with Apache Cordova
PROGRAMMING IN JAVA- unit 4-part II
Mastering the Sling Rewriter
Python Ireland Nov 2009 Talk - Appengine
Server Side JavaScript on the Java Platform - David Delabassee
slingmodels
Modern JavaScript, without giving up on Rails
User interface customization for aem6 circuit
AEM and Sling
Building Creative Product Extensions with Experience Manager
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Moving complex enterprise ecommerce systems to the cloud
User Interface customization for AEM 6
AEM 6.1 User Interface Customization
Apache Cordova 4.x
Introduction to Sightly and Sling Models
jQTouch – Mobile Web Apps with HTML, CSS and JavaScript
Introduction to Usergrid - ApacheCon EU 2014
React Native: Introduction
Ad

Viewers also liked (8)

PDF
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...
PPTX
ΑΡΧΕΣ ΣΧΕΔΙΑΣΜΟΥ ΕΚΠΑΙΔΕΥΤΙΚΟΥ ΥΛΙΚΟΥ
PDF
Real life forms to adf
PDF
Oracle ADF Mobile OGh (Oracle User Group Netherlands)
PDF
Doag wysiwyg
PPTX
How to Bring Common UI Patterns to ADF
PPS
Profesiones
PPTX
Ppt pk
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...
ΑΡΧΕΣ ΣΧΕΔΙΑΣΜΟΥ ΕΚΠΑΙΔΕΥΤΙΚΟΥ ΥΛΙΚΟΥ
Real life forms to adf
Oracle ADF Mobile OGh (Oracle User Group Netherlands)
Doag wysiwyg
How to Bring Common UI Patterns to ADF
Profesiones
Ppt pk
Ad

Similar to Real Life MAF (2.2) Oracle Open World 2015 (20)

PPTX
Managing Oracle Solaris Systems with Puppet
PDF
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
PDF
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
PPTX
Migrating From Applets to Java Desktop Apps in JavaFX
PPTX
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
PDF
NO CODE : Or How to Extend Oracle SaaS with Oracle Visual Builder Cloud Service
PDF
Pushing Java EE outside of the Enterprise - Home Automation
PDF
Delivering Mobile Apps to the Field with Oracle
PDF
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
PDF
Pivotal CenturyLink Cloud Platform Seminar Presentations: Architecture & Oper...
PPTX
J-Fall 2014 Community Keynote by Oracle
PDF
Using Eclipse EMF/GEF to develop an offline designer for identity manager
PPTX
The Power of Java and Oracle WebLogic Server in the Public Cloud (OpenWorld, ...
PDF
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
PPTX
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
PPTX
Enabing DevOps in an SDN World
PDF
第1回福岡SoftLayer勉強会
PDF
Extending Oracle SaaS Using Oracle Cloud UX Rapid Development Kit
PDF
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
PDF
Introduction To Cloud Foundry - SpringPeople
Managing Oracle Solaris Systems with Puppet
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Migrating From Applets to Java Desktop Apps in JavaFX
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
NO CODE : Or How to Extend Oracle SaaS with Oracle Visual Builder Cloud Service
Pushing Java EE outside of the Enterprise - Home Automation
Delivering Mobile Apps to the Field with Oracle
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
Pivotal CenturyLink Cloud Platform Seminar Presentations: Architecture & Oper...
J-Fall 2014 Community Keynote by Oracle
Using Eclipse EMF/GEF to develop an offline designer for identity manager
The Power of Java and Oracle WebLogic Server in the Public Cloud (OpenWorld, ...
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
Enabing DevOps in an SDN World
第1回福岡SoftLayer勉強会
Extending Oracle SaaS Using Oracle Cloud UX Rapid Development Kit
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
Introduction To Cloud Foundry - SpringPeople

More from Luc Bors (14)

PDF
Talk to me Goose: Going beyond your regular Chatbot
PDF
OgH Data Visualization Special Part III
PDF
OgH Data Visualization Special Part II
PDF
OgH Data Visualization Special Part I
PDF
amis-adf-enterprise-mobility
PDF
Oracle day 2014-mobile-customer-case
PPTX
oow2013-adf-mo-bi-le
PDF
Goodbye Nightmare : Tops and Tricks for creating Layouts
PDF
Dont Reinvent the Wheel: Tips and Tricks for reuse in ADF
PDF
ADF Mobile : Best Practices for Developing Applications with Oracle ADF Mobile
PPTX
ADF Mobile - an intro for Developers
PPTX
An ADF Special Report
PPTX
...and thus your forms automagically disappeared
PPTX
Odtug2011 adf developers make the database work for you
Talk to me Goose: Going beyond your regular Chatbot
OgH Data Visualization Special Part III
OgH Data Visualization Special Part II
OgH Data Visualization Special Part I
amis-adf-enterprise-mobility
Oracle day 2014-mobile-customer-case
oow2013-adf-mo-bi-le
Goodbye Nightmare : Tops and Tricks for creating Layouts
Dont Reinvent the Wheel: Tips and Tricks for reuse in ADF
ADF Mobile : Best Practices for Developing Applications with Oracle ADF Mobile
ADF Mobile - an intro for Developers
An ADF Special Report
...and thus your forms automagically disappeared
Odtug2011 adf developers make the database work for you

Recently uploaded (20)

PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Electronic commerce courselecture one. Pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPT
Teaching material agriculture food technology
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Encapsulation theory and applications.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Empathic Computing: Creating Shared Understanding
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
NewMind AI Weekly Chronicles - August'25 Week I
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
20250228 LYD VKU AI Blended-Learning.pptx
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Per capita expenditure prediction using model stacking based on satellite ima...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Electronic commerce courselecture one. Pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Teaching material agriculture food technology
Encapsulation_ Review paper, used for researhc scholars
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
The AUB Centre for AI in Media Proposal.docx
Encapsulation theory and applications.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Empathic Computing: Creating Shared Understanding
Advanced methodologies resolving dimensionality complications for autism neur...
Building Integrated photovoltaic BIPV_UPV.pdf

Real Life MAF (2.2) Oracle Open World 2015

  • 1. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | REAL-LIFE ORACLE MAF Luc Bors eProseed NL Oracle Open World 2015 San Francisco October 26th 2015 Things You Don’t Learn from Oracle’s Developers Guide
  • 2. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |2 WHO AM I ? •  Luc Bors •  Managing Partner •  eProseed •  Oracle Platinum Partner
  • 3. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | PROGRAM AGENDA Introducing Oracle MAF UI Development Device Properties Device Interaction REST JSON : A Sample 1 2 3 4 5 3
  • 4. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |4 INTRODUCING MAF •  MAF is a hybrid-mobile framework – Cross Platform Mobile Development – Visual and Declarative Development – Leverage Java Skills – Simplified Device Feature and Services Access
  • 5. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |5 MAF RUNTIME ARCHITECTURE •  Mobile Device – HTML – CSS – Java Script – Java – Cordova – SQLite – Push Handler – Access Control •  Server Side
  • 6. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | PROGRAM AGENDA Introducing Oracle MAF UI Development Device Properties Device Interaction REST JSON : A Sample 1 2 3 4 5 6
  • 7. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |7 TIP TIME
  • 8. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | DON’T MESS UP !! •  Read the installation guidelines carefully •  Install JDeveloper with jdk1.7 8 Cable Mess Frustration - photo by: Jonathan Arehart
  • 9. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |9 NO LONGER IN THIS PRESENTATION •  Gestures; Pull to Refresh •  Gestures; Swipe to Reveal •  In MAF 2.2 this is standard!
  • 10. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |10 NO LONGER IN THIS PRESENTATION •  Toggle Springboard •  In MAF 2.2 this is (almost) standard!
  • 11. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |11 TOGGLE SPRINGBOARD •  What is the Default toggle behavior ?
  • 12. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |12 TOGGLE SPRINGBOARD •  What is the Desired toggle behavior ? <amx:commandLink id="cl1" actionListener="#{bindings.toggleSpringboard.execute}”
 styleClass="springboard-icon" shortDesc="Springboard Link”>
 <amx:image id="i1" source="/images/springboard.svg" 
 shortDesc="Springboard Image"/>
 </amx:commandLink>
  • 13. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |13 DRAG AND DROP DEVELOPMENT
  • 14. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |14 DRAG AND DROP DEVELOPMENT
  • 15. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |15 DRAG AND DROP DEVELOPMENT
  • 16. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |16 CREATE FRAGMENTS •  Create Fragments that can be re-used •  Fragments can have styling •  Assign Attribute values when Fragment is used
  • 17. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |17 USE FRAGMENTS •  Drop fragment on page •  Assign Attribute values
  • 18. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |18 TO DND OR NOT TO DND ? •  The hard work – Create page fragments first – Create bindings manually – Assign attribute Values •  VS
  • 19. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |19 MAKE IT EVEN MORE BEAUTIFUL •  Use the tools ! •  Chrome Developer tools •  Safari Developer tools
  • 20. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |20 SKINNING IOS APPS •  Safari
  • 21. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |21 SKINNING IOS APPS
  • 22. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |22 SKINNING ANDROID APPS •  Chrome
  • 23. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |23 SKINNING ANDROID APPS
  • 24. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |24 TIP TIME
  • 25. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |25 THE MASONRY LAYOUT •  Works with mobileAlta-v1.4 •  You can disable the drag and drop behavior on the masonry layout items. •  Use the undocumented style class in MAF 2.2 for this is amx-masonryLayout-noDrag
  • 26. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | PROGRAM AGENDA Introducing Oracle MAF UI Development Device Properties Device Interaction REST JSON : A Sample 1 2 3 4 5 26
  • 27. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |27 DEVICE PROPERTIES •  Many Device properties are available •  Do what is possible, avoid what cannot be done
  • 28. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |28 LOADING IN THE BACKGROUND
  • 29. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | HOW IT WORKS •  Check network connectivity – #{deviceScope.hardware.networkStatus} – "wifi", "2g", "unknown", "none”, etc etc •  Start background thread – Load Images in background 29
  • 30. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |30 LOADING IN THE BACKGROUND
  • 31. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |31 MULTIPLE BACKGROUND THREADS •  You can actually use multiple background threads •  Can be refreshed individually •  AdfmfJavaUtilities.flushDataChangeEvent()
  • 32. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |32 HOW TO START IOS SIMULATOR ? •  Deploy app from within JDeveloper •  Start from within Xcode •  Start from Commandline
  • 33. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | PROGRAM AGENDA Introducing Oracle MAF UI Development Device Properties Device Interaction REST JSON : A Sample 1 2 3 4 5 33
  • 34. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | DEVICE INTERACTION •  The Device Datacontrol •  Drag n Drop support •  Attributes as fields •  Operations as buttons •  Or as a link
  • 35. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | BEHIND THE SCENES
  • 36. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | CAMERA INTERACTION •  Take a picture …………… •  …… or get one from the Library DeviceManager.CAMERA_SOURCETYPE_PHOTOLIBRARY import oracle.adf.model.datacontrols.device; DeviceManager dm = DeviceManagerFactory.getDeviceManager(); if (dm.hasCamera){ dm.getPicture( 100, DeviceManager.CAMERA_DESTINATIONTYPE_FILE_URI, DeviceManager.CAMERA_SOURCETYPE_CAMERA, false, DeviceManager.CAMERA_ENCODINGTYPE_PNG, 200, 200); }
  • 37. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | UPLOADING YOUR PICTURE •  REST/JSON à Needs a String, not an image 37 DeviceManager dm = DeviceManagerFactory.getDeviceManager(); String myImageDataBase64 = dm.getPicture(50, DeviceManager.CAMERA_DESTINATIONTYPE_DATA_URL, DeviceManager.CAMERA_SOURCETYPE_CAMERA, false, DeviceManager.CAMERA_ENCODINGTYPE_JPEG, 200, 200); } myImageDataBase64 = URLEncoder.encode(myImageDataBase64, java.nio.charset.StandardCharsets.UTF_8.toString());
  • 38. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | LOCAL NOTIFICATIONS •  Declarative – DeviceFeatures DC •  JavaScript API – adf.mf.api.localnotification •  Java API – adfmfContainerUtilities 38
  • 39. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | CREATING A LOCAL NOTIFICATION •  AdfmfContainerUtilities.addLocalNotification(options) •  AdfmfContainerUtilities.cancelLocalNotification(notificationId); 39
  • 40. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | REPEATING LOCAL NOTIFICATIONS 40
  • 41. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |41 TIP TIME
  • 42. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |42 CANCELING REPEATING NOTIFICATIONS •  Cancelling a notification means that the notification is COMPLETELY cancelled even if it was scheduled to fire every DAY •  Create a new one after cancelling
  • 43. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | PROGRAM AGENDA Introducing Oracle MAF UI Development Device Properties Device Interaction REST JSON : A Sample Some More Tips 1 2 3 4 5 43 6
  • 44. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |44 OVERVIEW OF A MAF SOLUTION JSONBeanSerializationHelper POJO Datacontrol Data Objects Data Objects Data ObjectsDataArray REST Adapter MAFBindingLayer RemoteRESTJSON R E S T C o n n e c t i o n MAF App
  • 45. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |45 CLASS HIERARCHY RestCallerUtil FlightCustURIs JsonArrayToFlightPassengerListArray JsonArrayToFlightDetailsArray FlightPassengerListArray FlightDetailsArray FlightPassengerListEntity FlightDetailsEntity FlightPassengersDC CustomerComplaintEntity FlightsRestService CustomerComplaintObject CustomerComplaintObjectToJsonObject CustomerRestService
  • 46. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |46 RESTSERVICE ADAPTER DOES THE CALL •  setRequestType – REQUEST_TYPE_GET à to GET flights and Passengers – REQUEST_TYPE_POST à to POST a complaint •  setConnectionName: To use the correct REST-connection •  setRequestURI à What is it that we want to do –  /flights/KL34 –  /flights/KL34/passengerlist –  /complaints •  NOTE: Request URI are bundled in a Custom Class (FlightCustURIs)
  • 47. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |47 REST JSON FROM SOA SUITE, OSB OR MCS
  • 48. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |48 USE SOAP UI “CLOUD SERVICE” { "FlightCode": { "CarrierCode": "KL", "FlightNumber": "34" }, "FlightDate": "2015-03-07T09:50:00.000+01:00", "TotalNumberOfPassengers": "22", "Passengers": [ { "FirstName": "Diana", "LastName": "Woodstock", "Country": "UK", "FrequentFlyerNumber": "BB123332", "Seat": "2B" }, { "FirstName": "William", "LastName": "Simon", "Country": "US", "FrequentFlyerNumber": "KK9182673", "Seat": "4C" },
  • 49. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |49 TIP TIME
  • 50. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | WHERE ARE MY FIFILES ? •  Finding the actual log file for an app, particularly since iOS 8 and Xcode 6, is a somewhat tricky •  Logfile – application.log 50
  • 51. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | THERE ARE MY LOGFILES ! •  iOS simulator content – /Users/lucbors/Library/Developer/CoreSimulator 51
  • 52. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | THERE ARE MY DEVICES ! •  iOS simulator content – /Users/lucbors/Library/Developer/CoreSimulator/Devices 52
  • 53. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | THERE IS MY DEVICE ! •  iOS simulator content – /Users/lucbors/Library/Developer/CoreSimulator/Devices – Use ls -lt 53
  • 54. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | THERE IS MY APPLICATION ! •  iOS simulator content – /Users/lucbors/Library/Developer/CoreSimulator/Devices/ <device>/data/Containers/Data/Application 54
  • 55. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | THERE IS MY LOGFILE ! •  iOS simulator content – /Users/lucbors/Library/Developer/CoreSimulator/Devices/ <device>/data/Containers/Data/Application/<app>/Documents/ logs 55
  • 56. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | WHERE ARE MY LOGFILES ? •  Change Location 56
  • 57. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. | IN MAF 2.2 THINGS CHANGED •  Logfile is automatically redirected to the JDeveloper Console 57
  • 58. Copyright © 2014, eProseed and/or its affiliates. All rights reserved. |58 SUMMARY •  Many Options to Develop •  Many Features to Use •  Highly Configurable •  Use Common Patterns •  Think Outside of the Box •  Use other Tools to Help you