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

What's hot (20)

PPTX
AEM 6.0 - Author UI Customization & Features
Abhinit Bhatnagar
 
PDF
Cross-platform mobile apps with Apache Cordova
Ivano Malavolta
 
PPTX
PROGRAMMING IN JAVA- unit 4-part II
SivaSankari36
 
PPTX
Mastering the Sling Rewriter
Justin Edelson
 
PDF
Python Ireland Nov 2009 Talk - Appengine
Python Ireland
 
PDF
Server Side JavaScript on the Java Platform - David Delabassee
JAXLondon2014
 
PDF
slingmodels
Ankur Chauhan
 
PDF
Modern JavaScript, without giving up on Rails
Jonathan Johnson
 
PPTX
User interface customization for aem6 circuit
Damien Antipa
 
PPTX
AEM and Sling
Lo Ki
 
PPTX
Building Creative Product Extensions with Experience Manager
Justin Edelson
 
PDF
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
JAX London
 
PDF
Moving complex enterprise ecommerce systems to the cloud
Elastic Path
 
PDF
User Interface customization for AEM 6
Damien Antipa
 
PDF
AEM 6.1 User Interface Customization
Christian Meyer
 
PDF
Apache Cordova 4.x
Ivano Malavolta
 
PPTX
Introduction to Sightly and Sling Models
Stefano Celentano
 
KEY
jQTouch – Mobile Web Apps with HTML, CSS and JavaScript
Philipp Bosch
 
PDF
Introduction to Usergrid - ApacheCon EU 2014
David M. Johnson
 
PPTX
React Native: Introduction
InnerFood
 
AEM 6.0 - Author UI Customization & Features
Abhinit Bhatnagar
 
Cross-platform mobile apps with Apache Cordova
Ivano Malavolta
 
PROGRAMMING IN JAVA- unit 4-part II
SivaSankari36
 
Mastering the Sling Rewriter
Justin Edelson
 
Python Ireland Nov 2009 Talk - Appengine
Python Ireland
 
Server Side JavaScript on the Java Platform - David Delabassee
JAXLondon2014
 
slingmodels
Ankur Chauhan
 
Modern JavaScript, without giving up on Rails
Jonathan Johnson
 
User interface customization for aem6 circuit
Damien Antipa
 
AEM and Sling
Lo Ki
 
Building Creative Product Extensions with Experience Manager
Justin Edelson
 
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
JAX London
 
Moving complex enterprise ecommerce systems to the cloud
Elastic Path
 
User Interface customization for AEM 6
Damien Antipa
 
AEM 6.1 User Interface Customization
Christian Meyer
 
Apache Cordova 4.x
Ivano Malavolta
 
Introduction to Sightly and Sling Models
Stefano Celentano
 
jQTouch – Mobile Web Apps with HTML, CSS and JavaScript
Philipp Bosch
 
Introduction to Usergrid - ApacheCon EU 2014
David M. Johnson
 
React Native: Introduction
InnerFood
 
Ad

Viewers also liked (8)

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

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

PPTX
Managing Oracle Solaris Systems with Puppet
glynnfoster
 
PDF
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Marco Antonio Maciel
 
PDF
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Codemotion Tel Aviv
 
PPTX
Migrating From Applets to Java Desktop Apps in JavaFX
Bruno Borges
 
PPTX
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Chris Muir
 
PDF
NO CODE : Or How to Extend Oracle SaaS with Oracle Visual Builder Cloud Service
Luc Bors
 
PDF
Pushing Java EE outside of the Enterprise - Home Automation
David Delabassee
 
PDF
Delivering Mobile Apps to the Field with Oracle
Simon Haslam
 
PDF
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
Bart Jonkers
 
PDF
Pivotal CenturyLink Cloud Platform Seminar Presentations: Architecture & Oper...
VMware Tanzu
 
PPTX
J-Fall 2014 Community Keynote by Oracle
javafxpert
 
PDF
Using Eclipse EMF/GEF to develop an offline designer for identity manager
Eclipse Day India
 
PPTX
The Power of Java and Oracle WebLogic Server in the Public Cloud (OpenWorld, ...
jeckels
 
PDF
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
Bruno Borges
 
PPTX
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
Marco Gralike
 
PPTX
Enabing DevOps in an SDN World
Cisco DevNet
 
PDF
第1回福岡SoftLayer勉強会
Shin Sakamoto
 
PDF
Extending Oracle SaaS Using Oracle Cloud UX Rapid Development Kit
Luc Bors
 
PDF
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Introduction To Cloud Foundry - SpringPeople
SpringPeople
 
Managing Oracle Solaris Systems with Puppet
glynnfoster
 
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Marco Antonio Maciel
 
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Codemotion Tel Aviv
 
Migrating From Applets to Java Desktop Apps in JavaFX
Bruno Borges
 
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Chris Muir
 
NO CODE : Or How to Extend Oracle SaaS with Oracle Visual Builder Cloud Service
Luc Bors
 
Pushing Java EE outside of the Enterprise - Home Automation
David Delabassee
 
Delivering Mobile Apps to the Field with Oracle
Simon Haslam
 
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
Bart Jonkers
 
Pivotal CenturyLink Cloud Platform Seminar Presentations: Architecture & Oper...
VMware Tanzu
 
J-Fall 2014 Community Keynote by Oracle
javafxpert
 
Using Eclipse EMF/GEF to develop an offline designer for identity manager
Eclipse Day India
 
The Power of Java and Oracle WebLogic Server in the Public Cloud (OpenWorld, ...
jeckels
 
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
Bruno Borges
 
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
Marco Gralike
 
Enabing DevOps in an SDN World
Cisco DevNet
 
第1回福岡SoftLayer勉強会
Shin Sakamoto
 
Extending Oracle SaaS Using Oracle Cloud UX Rapid Development Kit
Luc Bors
 
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Introduction To Cloud Foundry - SpringPeople
SpringPeople
 

More from Luc Bors (14)

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

Recently uploaded (20)

PDF
Doc9.....................................
SofiaCollazos
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
PDF
Software Development Methodologies in 2025
KodekX
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
Doc9.....................................
SofiaCollazos
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
Software Development Methodologies in 2025
KodekX
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 

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