SlideShare a Scribd company logo
Marrying together the worlds of 
ADF and HTML5 & AngularJS 
Lucas Jellema (& Paco van der Linden) 
Oracle OpenWorld 2014, San Francisco, CA, USA
Overview 
• Why – Objectives 
• Exploration –rich HTML5 component, reusable in ADF 
• Approach 
– Stand alone AngularJS/HTML5 application 
– Extract ‘3D Tag Cloud component’ 
– Create ADF Taskflow wrapper around Tag Cloud component 
– Creating ‘plumbing’ – connect Tag Cloud to 
pageFlowScope and contextual events 
– Further integration: absorb ADF skins, i18n and customization 
into Tag Cloud component 
• Demonstration 
• Conclusion: 
– We can leverage the world of HTML5/AngularJS resources to add spiffy, productive 
functionality to ADF Faces Web Applications 
ADF 
Faces 
HTML5 
AngularJS
3 
ADF Match Center application
4 
ADF Match Center application 
ViewController 
World Cup 
database 
schema 
Model 
Rich Table 
Popup 
MatchCenter.jspx 
Taskflow match 
Taskflow taglist 
Taskflow match-details
5 
Objective: Interactive Tag 
Cloud integrated into ADF app
Thick Client Thin Client 
Presentation 
Rendering 
Presentation 
Rendering 
Presentation 
Logic 
Enterprise Resources 
(Data & Documents) 
Presentation 
Logic 
Business 
Logic 
Client == Browser Server 
Presentation 
Rendering 
Presentation 
Logic 
Business 
Logic 
Business 
Logic 
Presentation Logic 
Business 
Logic 
Presentation 
Rendering 
Presentation 
Logic 
Business 
Logic 
Business 
Logic
Rich Client 
HTML5/JS 
SPA 
Client 
Presentation Services 
Business Services 
Enterprise Resources 
Client 
Server 
Angular ADF APEX 
Thin Client 
Web Application 
JSON 
XML 
XML 
HTML HTML 
JSON 
XML 
POJO 
XML 
session state 
stateless session state
8 
Final Result 
Web Developer 
community 
Taskflow 
Databound 
ADF Rich Table 
World Cup 
database 
schema 
ADF World Cup 2014 Match Center application 
AngularJS TagCloud application 
Angular 
TagCloud 
Module 
3D interactive, 
animated Tag Cloud 
Taskflow
9 
Step One – Stand Alone 
AngularJS TagCloud application 
• Locate reusable JavaScript/HTML5 
Tag Cloud: TagCanvas
10 
Step One – Stand Alone 
AngularJS TagCloud application 
• Locate reusable JavaScript/HTML5 
Tag Cloud: TagCanvas 
• Set up HTML5/AngularJS development 
environment: 
– IDE: Sublime Text Editor 
– Package Manager: Node.js - NPM 
– Build (Ant-like): Gulp 
– Dependency Management (Maven-style): Bower 
– Run Time: Google Chrome browser
11 
Step One – Stand Alone 
AngularJS TagCloud application 
• Locate reusable JavaScript/HTML5 
Tag Cloud: TagCanvas 
• Set up HTML5/AngularJS development 
environment: 
– IDE: Sublime Text Editor 
– Package Manager: Node.js - NPM 
– Build (Ant-like): Gulp 
– Dependency Management (Maven-style): Bower 
– Run Time: Google Chrome browser 
• Construct AngularJS application 
– tagcloud-html 
– bower.json 
– gulpfile 
– AngularJS Module TagCloud
tagcloud.html 
tagcloud.js 
tagcloud-html. 
html 
Angular 
Module 
tagcloud 
Angular Module myApp 
myController 
$scope.tags = [ … ]; 
$scope.tagClicked = function (tag) {…} 
Angular scope 
log 
tags 
tagClicked()
13 
Step 2 - Bridge 
• Multiple tag-cloud components in a single page 
• Exchange events from the host-page to the guest-tagcloud and back 
• New AngularJS Module: angularGuest 
– Uses the OTNBridge JavaScript library 
• Guests register with the bridge 
• The bridge can receive messages from the guests 
and callback to host to pass 
them through 
• Host can call bridge to call 
guests to pass message 
• Guests can embed other 
AngularJS modules 
– Such as tagcloud 
angularGuest – bridge1 
angularGuest.js 
Angular 
Module 
angularGuest 
OTNBridge 
hostCallBack() 
guests 
toGuest() 
guestCallbacks 
Angular 
Module 
Angular 
Module
Angular 
Module 
tagcloud 
tagcloud.html 
tagcloud.js 
tagcloud-bridge. 
html 
angularGuest – bridge1 
Angular scope 
toHost(msg) 
myTagcloud 
tagClicked() 
angularGuest.js 
Angular 
Module 
angularGuest 
OTNBridge 
hostCallBack() 
guests 
toGuest() 
guestCallbacks
Angular 
Module 
tagcloud 
tagcloud.html 
tagcloud.js 
tagcloud-bridge. 
html 
angularGuest – bridge1 
Angular scope 
toHost(msg) 
myTagcloud 
tagClicked() 
angularGuest.js 
Angular 
Module 
angularGuest 
OTNBridge 
hostCallBack() 
guests 
angularGuest – bridge 2 
Angular scope 
toHost(msg) 
myTagcloud 
tagClicked() 
toGuest() toGuest() 
guestCallbacks 
OTNBridge 
hostCallBack() 
guests 
guestCallbacks
16 
Integrating Angular Bridge into 
ADF applications 
• Containerize the AngularJS + Tagcloud + Bridge application (single JS file) 
• Create an ADF TaskFlow with a page fragment and PageFlowScope beans 
otnBridge and tagCloudBean 
– The former (generic) loads the JavaScript and publishes data to the AngularJS Scope 
– The latter (special) handles the ’tag is clicked event’
17 
Integrating Angular Bridge into 
ADF applications 
ViewController 
Taskflow tagcloud 
MainPage.jspx 
Taskflow tagcloud 
Page Fragment tagcloud.jsff 
integration.js 
OTNBridge 
OTNBootstrapper 
tagcloud.js 
angularGuest 
tagcloud 
pageflowScope 
otnBridge 
tagCloudBean
18 
TagCloudBean 
1 
4 
3 2 
5
19 
Make AngularJS component 
bound on ADF Data Binding 
• The input parameter for the tagcloud Taskflow is set with a reference to 
the animalCloud bean in the (page’s) viewScope 
– This bean returns a list of tags 
– Alternatively, a reference to an ADF data bound collection could have been used 
ViewController 
Taskflow tagcloud 
pageflowScope 
otnBridge 
tags tagCloudBean 
viewScope 
animalCloud
20 Two TagClouds embedded in 
ADF page 
ViewController ` 
Taskflow tagcloud 
pageflowScope 
otnBridge 
tags tagCloudBean 
viewScope 
animalCloud 
carsCloud 
Taskflow tagcloud 
pageflowScope 
otnBridge 
tags tagCloudBean
21 
Forwarding the tag clicked 
event from tagcloud to ADF 
• Event in Angular component is turned into ADF Contextual Event to be 
consumed in host (ADF) application 
ViewController 
Taskflow tagcloud 
pageflowScope 
viewScope tagCloudBean 
zooKeeper 
zebra
22 
Client Side events in Angular – 
pushed to ADF client => server 
ViewController 
Taskflow tagcloud 
pageflowScope 
tagCloudBean 
OTNBridge 
hostCallBack() 
zebra
23 
Consume ADF Contextual 
Event into Angular component 
• Actions in the ADF side 
of the applications can 
[need to have] consequences 
in the embedded components 
• ADF Contextual Events are 
the vehicle for this ‘from host 
to guest’ interaction 
– Just like they are for the 
reverse route 
• For example: add a tag from 
outside the TagCloud Taskflow
Consume ADF Contextual 
Event into Angular component 
ViewController 
Taskflow tagcloud 
pageflowScope 
tagCloudBean 
1 
viewScope 
2 
4 
zooKeeper 
parkingAttendant 
horse 
3 
5 
6 
7
25 
Apply ADF Skinning to 
embedded Angular components 
• Skinning is a server side mechanism that generates CSS styles to apply 
to UI components rendered in the browser 
– CSS generation depends on selected skin, browser (version), locale, etc. 
• The objective right now: 
– apply these generated styles to the UI elements inside the embedded Angular 
TagCloud component – to make them assume the same look and feel 
• The challenge: 
– Skinning knows nothing about the embedded elements and vice versa. 
• The trick: 
– Add a number of invisible ‘dummy’ components in the ADF Tasfklow 
– At run time, using JavaScript, retrieve the skin-based CSS styles that are applied to 
these dummy components 
– Pass the style properties to the Angular scope [for each interested guest] and inside 
the guest, apply these properties to the target components
ViewController 
Taskflow tagcloud 
pageflowScope 
tagCloudBean 
integration.js 
sendMessage 
ToGuest 
inspectStyles
28 
Apply Resource Bundles & i18n to 
embedded Angular components 
• Internationalization (i18n) is the adaptation of the user interface to current 
locale (language, region) 
– ADF (and Java) uses resource bundles per language that contain key-value pairs for 
locale specific attributes – such as boilerplate text 
• The objective right now: 
– apply these translated values to i18n-enabled attributes in the embedded component 
• The challenge: 
– AngularJS and our JavaScript component are unaware of ADF Faces and of i18n 
based on resource bundles 
• The trick: 
– Add an invisble inputText component in the ADF Tasfklow 
– Define a clientAttribute on this component with a JSON collection that contains 
resource bundle entries 
– At run time, ADF Faces ensures that 
these entries are translated 
– Read the clientAttribute in JavaScript 
and pass the value to the guest
ViewController 
Taskflow tagcloud 
pageflowScope 
tagCloudBean 
integration.js 
sendMessage 
ToGuest 
extractTagsFor 
Resource 
BundleEntries
31 
Customize and Personalize the 
embedded AngularJS component 
• Customization and Personalization is the adaptation of the user interface 
based on context specific and personal settings and preferences 
– ADF supports design time and run time customizations to be created (in MDS) and to be 
applied at run time to UI components 
• The objective right now: 
– Create and apply customizations and personalizations to embedded Angular components 
such as the 3D Tag Cloud 
• The challenge: 
– AngularJS and our JavaScript component are unaware of ADF Faces and of customization 
and MDS 
• The trick: 
– Add invisible ADF Faces components in the ADF Tasfklow and define customizations on 
their properties in the regular way 
– To define customizations at run time – open a popup that shows ‘proxies’ for the UI 
elements in the embedded component and define customizations on those 
– At run time, ADF Faces ensures that customizations are applied according to the current 
content 
– Read the relevant customized properties in JavaScript and pass the values to the guest
32 
World Cup 2014 Match Center
33 
Summary and Conclusion 
• Rich Client web applications are popular 
– User experience is smooth and rich, optimally benefitting from HTML5 capabilities 
– Development is relatively simple and productive 
– Many resources are available 
• ADF provides an enterprise application framework 
– With a number of robust enterprise infrastructure facilities 
– Fairly thick-server architecture with large but limited set of UI components 
• ADF Web Applications can be enhanced using HTML5 components 
– (for example) AngularJS modules can be created as stand-alone components, then 
containerized and embedded in a reusable ADF Taskflow 
– Using contextual events, embedded components can exchange data and events with 
the ADF host and vice versa 
• Without sacrificing the benefits of ADF, organizations can benefit from 
many of the richness of HTML5
Marrying HTML5 and Angular to ADF - Oracle OpenWorld 2014 Preview

More Related Content

What's hot

스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
AWSKRUG - AWS한국사용자모임
 
K8s on AWS - Introducing Amazon EKS
K8s on AWS - Introducing Amazon EKSK8s on AWS - Introducing Amazon EKS
K8s on AWS - Introducing Amazon EKS
Amazon Web Services
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
Amazon Web Services Korea
 
DevOps: Age Of CI/CD
DevOps: Age Of CI/CDDevOps: Age Of CI/CD
DevOps: Age Of CI/CD
MoogleLabs default
 
Introduction to AWS X-Ray
Introduction to AWS X-RayIntroduction to AWS X-Ray
Introduction to AWS X-Ray
Amazon Web Services
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
Araf Karsh Hamid
 
Multitenancy on EKS
Multitenancy on EKSMultitenancy on EKS
Multitenancy on EKS
Ian Crosby
 
ELB를 활용한 Socket.IO 멀티노드 구축사례
ELB를 활용한 Socket.IO 멀티노드 구축사례ELB를 활용한 Socket.IO 멀티노드 구축사례
ELB를 활용한 Socket.IO 멀티노드 구축사례
Anson Park
 
Infrastructure Continuous Delivery Using AWS CloudFormation
Infrastructure Continuous Delivery Using AWS CloudFormationInfrastructure Continuous Delivery Using AWS CloudFormation
Infrastructure Continuous Delivery Using AWS CloudFormation
Amazon Web Services
 
(CMP201) All You Need To Know About Auto Scaling
(CMP201) All You Need To Know About Auto Scaling(CMP201) All You Need To Know About Auto Scaling
(CMP201) All You Need To Know About Auto Scaling
Amazon Web Services
 
Build a Serverless Application using GraphQL & AWS AppSync
Build a Serverless Application using GraphQL & AWS AppSyncBuild a Serverless Application using GraphQL & AWS AppSync
Build a Serverless Application using GraphQL & AWS AppSync
Amazon Web Services
 
Real time replication using Kafka Connect
Real time replication using Kafka ConnectReal time replication using Kafka Connect
Real time replication using Kafka Connect
confluent
 
Kubernetes Problem-Solving
Kubernetes Problem-SolvingKubernetes Problem-Solving
Kubernetes Problem-Solving
All Things Open
 
All you need to know about Auto scaling - Pop-up Loft
All you need to know about Auto scaling - Pop-up LoftAll you need to know about Auto scaling - Pop-up Loft
All you need to know about Auto scaling - Pop-up Loft
Amazon Web Services
 
Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017
Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017
Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
Testing Spring Applications
Testing Spring ApplicationsTesting Spring Applications
Testing Spring Applications
Muhammad Abdullah
 
DevOps and AWS
DevOps and AWSDevOps and AWS
DevOps and AWS
Shiva Narayanaswamy
 
Istio Ambient Mesh in ACTION - Istio UG Singapore - 22June,2023
Istio Ambient Mesh in ACTION - Istio UG Singapore - 22June,2023Istio Ambient Mesh in ACTION - Istio UG Singapore - 22June,2023
Istio Ambient Mesh in ACTION - Istio UG Singapore - 22June,2023
SaiLinnThu2
 
Amazon API Gateway
Amazon API GatewayAmazon API Gateway
Amazon API Gateway
Amazon Web Services
 
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive [2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
Amazon Web Services Korea
 

What's hot (20)

스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
 
K8s on AWS - Introducing Amazon EKS
K8s on AWS - Introducing Amazon EKSK8s on AWS - Introducing Amazon EKS
K8s on AWS - Introducing Amazon EKS
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
 
DevOps: Age Of CI/CD
DevOps: Age Of CI/CDDevOps: Age Of CI/CD
DevOps: Age Of CI/CD
 
Introduction to AWS X-Ray
Introduction to AWS X-RayIntroduction to AWS X-Ray
Introduction to AWS X-Ray
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
 
Multitenancy on EKS
Multitenancy on EKSMultitenancy on EKS
Multitenancy on EKS
 
ELB를 활용한 Socket.IO 멀티노드 구축사례
ELB를 활용한 Socket.IO 멀티노드 구축사례ELB를 활용한 Socket.IO 멀티노드 구축사례
ELB를 활용한 Socket.IO 멀티노드 구축사례
 
Infrastructure Continuous Delivery Using AWS CloudFormation
Infrastructure Continuous Delivery Using AWS CloudFormationInfrastructure Continuous Delivery Using AWS CloudFormation
Infrastructure Continuous Delivery Using AWS CloudFormation
 
(CMP201) All You Need To Know About Auto Scaling
(CMP201) All You Need To Know About Auto Scaling(CMP201) All You Need To Know About Auto Scaling
(CMP201) All You Need To Know About Auto Scaling
 
Build a Serverless Application using GraphQL & AWS AppSync
Build a Serverless Application using GraphQL & AWS AppSyncBuild a Serverless Application using GraphQL & AWS AppSync
Build a Serverless Application using GraphQL & AWS AppSync
 
Real time replication using Kafka Connect
Real time replication using Kafka ConnectReal time replication using Kafka Connect
Real time replication using Kafka Connect
 
Kubernetes Problem-Solving
Kubernetes Problem-SolvingKubernetes Problem-Solving
Kubernetes Problem-Solving
 
All you need to know about Auto scaling - Pop-up Loft
All you need to know about Auto scaling - Pop-up LoftAll you need to know about Auto scaling - Pop-up Loft
All you need to know about Auto scaling - Pop-up Loft
 
Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017
Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017
Amazon S3 이미지 온디맨드 리사이징을 통한 70% 서버 비용 줄이기 - AWS Summit Seoul 2017
 
Testing Spring Applications
Testing Spring ApplicationsTesting Spring Applications
Testing Spring Applications
 
DevOps and AWS
DevOps and AWSDevOps and AWS
DevOps and AWS
 
Istio Ambient Mesh in ACTION - Istio UG Singapore - 22June,2023
Istio Ambient Mesh in ACTION - Istio UG Singapore - 22June,2023Istio Ambient Mesh in ACTION - Istio UG Singapore - 22June,2023
Istio Ambient Mesh in ACTION - Istio UG Singapore - 22June,2023
 
Amazon API Gateway
Amazon API GatewayAmazon API Gateway
Amazon API Gateway
 
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive [2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
 

Viewers also liked

Running ADF Faces on Tablets and Mobile Phones
Running ADF Faces on Tablets and Mobile PhonesRunning ADF Faces on Tablets and Mobile Phones
Running ADF Faces on Tablets and Mobile Phones
Steven Davelaar
 
Oracle ADF Overview for Beginners
Oracle ADF Overview for BeginnersOracle ADF Overview for Beginners
Oracle ADF Overview for Beginners
Jithin Kuriakose
 
Java Framework comparison
Java Framework comparisonJava Framework comparison
Java Framework comparison
SIB Visions GmbH
 
Time is of the essence - The Fourth Dimension in Oracle Database 12c (on Flas...
Time is of the essence - The Fourth Dimension in Oracle Database 12c (on Flas...Time is of the essence - The Fourth Dimension in Oracle Database 12c (on Flas...
Time is of the essence - The Fourth Dimension in Oracle Database 12c (on Flas...
Lucas Jellema
 
Building Highly Reusable Taskflows
Building Highly Reusable TaskflowsBuilding Highly Reusable Taskflows
Building Highly Reusable Taskflows
Steven Davelaar
 
Comparison ppt
Comparison pptComparison ppt
Comparison ppt
Zafong Technologies LLP
 
Oracle JET CRUD and ADF BC REST
Oracle JET CRUD and ADF BC RESTOracle JET CRUD and ADF BC REST
Oracle JET CRUD and ADF BC REST
andrejusb
 
Oracle ADF Task Flows for Beginners
Oracle ADF Task Flows for BeginnersOracle ADF Task Flows for Beginners
Oracle ADF Task Flows for BeginnersDataNext Solutions
 
Web services tutorial
Web services tutorialWeb services tutorial
Web services tutorial
Lorna Mitchell
 

Viewers also liked (9)

Running ADF Faces on Tablets and Mobile Phones
Running ADF Faces on Tablets and Mobile PhonesRunning ADF Faces on Tablets and Mobile Phones
Running ADF Faces on Tablets and Mobile Phones
 
Oracle ADF Overview for Beginners
Oracle ADF Overview for BeginnersOracle ADF Overview for Beginners
Oracle ADF Overview for Beginners
 
Java Framework comparison
Java Framework comparisonJava Framework comparison
Java Framework comparison
 
Time is of the essence - The Fourth Dimension in Oracle Database 12c (on Flas...
Time is of the essence - The Fourth Dimension in Oracle Database 12c (on Flas...Time is of the essence - The Fourth Dimension in Oracle Database 12c (on Flas...
Time is of the essence - The Fourth Dimension in Oracle Database 12c (on Flas...
 
Building Highly Reusable Taskflows
Building Highly Reusable TaskflowsBuilding Highly Reusable Taskflows
Building Highly Reusable Taskflows
 
Comparison ppt
Comparison pptComparison ppt
Comparison ppt
 
Oracle JET CRUD and ADF BC REST
Oracle JET CRUD and ADF BC RESTOracle JET CRUD and ADF BC REST
Oracle JET CRUD and ADF BC REST
 
Oracle ADF Task Flows for Beginners
Oracle ADF Task Flows for BeginnersOracle ADF Task Flows for Beginners
Oracle ADF Task Flows for Beginners
 
Web services tutorial
Web services tutorialWeb services tutorial
Web services tutorial
 

Similar to Marrying HTML5 and Angular to ADF - Oracle OpenWorld 2014 Preview

Marrying together the worlds of ADF and HTML5 & AngularJS - Oracle OpenWorld ...
Marrying together the worlds of ADF and HTML5 & AngularJS - Oracle OpenWorld ...Marrying together the worlds of ADF and HTML5 & AngularJS - Oracle OpenWorld ...
Marrying together the worlds of ADF and HTML5 & AngularJS - Oracle OpenWorld ...
Getting value from IoT, Integration and Data Analytics
 
Getting Started with AngularJS
Getting Started with AngularJSGetting Started with AngularJS
Getting Started with AngularJS
Edureka!
 
Getting Started With AngularJS
Getting Started With AngularJSGetting Started With AngularJS
Getting Started With AngularJS
Edureka!
 
Angular js workshop
Angular js workshopAngular js workshop
Angular js workshop
Rolands Krumbergs
 
AngularJS for Beginners
AngularJS for BeginnersAngularJS for Beginners
AngularJS for Beginners
Edureka!
 
Angular patterns
Angular patternsAngular patterns
Angular patterns
Premkumar M
 
Building reusable components as micro frontends with glimmer js and webcompo...
Building reusable components as micro frontends  with glimmer js and webcompo...Building reusable components as micro frontends  with glimmer js and webcompo...
Building reusable components as micro frontends with glimmer js and webcompo...
Andrei Sebastian Cîmpean
 
Single Page Applications in SharePoint with Angular
Single Page Applications in SharePoint with AngularSingle Page Applications in SharePoint with Angular
Single Page Applications in SharePoint with Angular
Sparkhound Inc.
 
Angular js
Angular jsAngular js
Angular js
Baldeep Sohal
 
Angular 6 Training with project in hyderabad india
Angular 6 Training with project in hyderabad indiaAngular 6 Training with project in hyderabad india
Angular 6 Training with project in hyderabad india
php2ranjan
 
Angular js
Angular jsAngular js
Angularjs for kolkata drupal meetup
Angularjs for kolkata drupal meetupAngularjs for kolkata drupal meetup
Angularjs for kolkata drupal meetupGoutam Dey
 
AngularJS Basics
AngularJS BasicsAngularJS Basics
AngularJS Basics
Ravi Mone
 
Angular kickstart slideshare
Angular kickstart   slideshareAngular kickstart   slideshare
Angular kickstart slideshare
SaleemMalik52
 
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Nicolas HAAN
 
Angular 2.0
Angular  2.0Angular  2.0
Angular 2.0
Mallikarjuna G D
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Ganesh Kondal
 
Angular1x and Angular 2 for Beginners
Angular1x and Angular 2 for BeginnersAngular1x and Angular 2 for Beginners
Angular1x and Angular 2 for Beginners
Oswald Campesato
 
Understanding angular js
Understanding angular jsUnderstanding angular js
Understanding angular js
Aayush Shrestha
 

Similar to Marrying HTML5 and Angular to ADF - Oracle OpenWorld 2014 Preview (20)

Marrying together the worlds of ADF and HTML5 & AngularJS - Oracle OpenWorld ...
Marrying together the worlds of ADF and HTML5 & AngularJS - Oracle OpenWorld ...Marrying together the worlds of ADF and HTML5 & AngularJS - Oracle OpenWorld ...
Marrying together the worlds of ADF and HTML5 & AngularJS - Oracle OpenWorld ...
 
Getting Started with AngularJS
Getting Started with AngularJSGetting Started with AngularJS
Getting Started with AngularJS
 
Getting Started With AngularJS
Getting Started With AngularJSGetting Started With AngularJS
Getting Started With AngularJS
 
Angular js workshop
Angular js workshopAngular js workshop
Angular js workshop
 
AngularJS for Beginners
AngularJS for BeginnersAngularJS for Beginners
AngularJS for Beginners
 
Angular patterns
Angular patternsAngular patterns
Angular patterns
 
Building reusable components as micro frontends with glimmer js and webcompo...
Building reusable components as micro frontends  with glimmer js and webcompo...Building reusable components as micro frontends  with glimmer js and webcompo...
Building reusable components as micro frontends with glimmer js and webcompo...
 
Training On Angular Js
Training On Angular JsTraining On Angular Js
Training On Angular Js
 
Single Page Applications in SharePoint with Angular
Single Page Applications in SharePoint with AngularSingle Page Applications in SharePoint with Angular
Single Page Applications in SharePoint with Angular
 
Angular js
Angular jsAngular js
Angular js
 
Angular 6 Training with project in hyderabad india
Angular 6 Training with project in hyderabad indiaAngular 6 Training with project in hyderabad india
Angular 6 Training with project in hyderabad india
 
Angular js
Angular jsAngular js
Angular js
 
Angularjs for kolkata drupal meetup
Angularjs for kolkata drupal meetupAngularjs for kolkata drupal meetup
Angularjs for kolkata drupal meetup
 
AngularJS Basics
AngularJS BasicsAngularJS Basics
AngularJS Basics
 
Angular kickstart slideshare
Angular kickstart   slideshareAngular kickstart   slideshare
Angular kickstart slideshare
 
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
 
Angular 2.0
Angular  2.0Angular  2.0
Angular 2.0
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
 
Angular1x and Angular 2 for Beginners
Angular1x and Angular 2 for BeginnersAngular1x and Angular 2 for Beginners
Angular1x and Angular 2 for Beginners
 
Understanding angular js
Understanding angular jsUnderstanding angular js
Understanding angular js
 

More from Lucas Jellema

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
Lucas Jellema
 
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Lucas Jellema
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lucas Jellema
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...
Lucas Jellema
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
Lucas Jellema
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Lucas Jellema
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!
Lucas Jellema
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)
Lucas Jellema
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Lucas Jellema
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Lucas Jellema
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Lucas Jellema
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...
Lucas Jellema
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
Lucas Jellema
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Lucas Jellema
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Lucas Jellema
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
Lucas Jellema
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Lucas Jellema
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)
Lucas Jellema
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Lucas Jellema
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Lucas Jellema
 

More from Lucas Jellema (20)

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
 
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
 

Recently uploaded

Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
kalichargn70th171
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 

Recently uploaded (20)

Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 

Marrying HTML5 and Angular to ADF - Oracle OpenWorld 2014 Preview

  • 1. Marrying together the worlds of ADF and HTML5 & AngularJS Lucas Jellema (& Paco van der Linden) Oracle OpenWorld 2014, San Francisco, CA, USA
  • 2. Overview • Why – Objectives • Exploration –rich HTML5 component, reusable in ADF • Approach – Stand alone AngularJS/HTML5 application – Extract ‘3D Tag Cloud component’ – Create ADF Taskflow wrapper around Tag Cloud component – Creating ‘plumbing’ – connect Tag Cloud to pageFlowScope and contextual events – Further integration: absorb ADF skins, i18n and customization into Tag Cloud component • Demonstration • Conclusion: – We can leverage the world of HTML5/AngularJS resources to add spiffy, productive functionality to ADF Faces Web Applications ADF Faces HTML5 AngularJS
  • 3. 3 ADF Match Center application
  • 4. 4 ADF Match Center application ViewController World Cup database schema Model Rich Table Popup MatchCenter.jspx Taskflow match Taskflow taglist Taskflow match-details
  • 5. 5 Objective: Interactive Tag Cloud integrated into ADF app
  • 6. Thick Client Thin Client Presentation Rendering Presentation Rendering Presentation Logic Enterprise Resources (Data & Documents) Presentation Logic Business Logic Client == Browser Server Presentation Rendering Presentation Logic Business Logic Business Logic Presentation Logic Business Logic Presentation Rendering Presentation Logic Business Logic Business Logic
  • 7. Rich Client HTML5/JS SPA Client Presentation Services Business Services Enterprise Resources Client Server Angular ADF APEX Thin Client Web Application JSON XML XML HTML HTML JSON XML POJO XML session state stateless session state
  • 8. 8 Final Result Web Developer community Taskflow Databound ADF Rich Table World Cup database schema ADF World Cup 2014 Match Center application AngularJS TagCloud application Angular TagCloud Module 3D interactive, animated Tag Cloud Taskflow
  • 9. 9 Step One – Stand Alone AngularJS TagCloud application • Locate reusable JavaScript/HTML5 Tag Cloud: TagCanvas
  • 10. 10 Step One – Stand Alone AngularJS TagCloud application • Locate reusable JavaScript/HTML5 Tag Cloud: TagCanvas • Set up HTML5/AngularJS development environment: – IDE: Sublime Text Editor – Package Manager: Node.js - NPM – Build (Ant-like): Gulp – Dependency Management (Maven-style): Bower – Run Time: Google Chrome browser
  • 11. 11 Step One – Stand Alone AngularJS TagCloud application • Locate reusable JavaScript/HTML5 Tag Cloud: TagCanvas • Set up HTML5/AngularJS development environment: – IDE: Sublime Text Editor – Package Manager: Node.js - NPM – Build (Ant-like): Gulp – Dependency Management (Maven-style): Bower – Run Time: Google Chrome browser • Construct AngularJS application – tagcloud-html – bower.json – gulpfile – AngularJS Module TagCloud
  • 12. tagcloud.html tagcloud.js tagcloud-html. html Angular Module tagcloud Angular Module myApp myController $scope.tags = [ … ]; $scope.tagClicked = function (tag) {…} Angular scope log tags tagClicked()
  • 13. 13 Step 2 - Bridge • Multiple tag-cloud components in a single page • Exchange events from the host-page to the guest-tagcloud and back • New AngularJS Module: angularGuest – Uses the OTNBridge JavaScript library • Guests register with the bridge • The bridge can receive messages from the guests and callback to host to pass them through • Host can call bridge to call guests to pass message • Guests can embed other AngularJS modules – Such as tagcloud angularGuest – bridge1 angularGuest.js Angular Module angularGuest OTNBridge hostCallBack() guests toGuest() guestCallbacks Angular Module Angular Module
  • 14. Angular Module tagcloud tagcloud.html tagcloud.js tagcloud-bridge. html angularGuest – bridge1 Angular scope toHost(msg) myTagcloud tagClicked() angularGuest.js Angular Module angularGuest OTNBridge hostCallBack() guests toGuest() guestCallbacks
  • 15. Angular Module tagcloud tagcloud.html tagcloud.js tagcloud-bridge. html angularGuest – bridge1 Angular scope toHost(msg) myTagcloud tagClicked() angularGuest.js Angular Module angularGuest OTNBridge hostCallBack() guests angularGuest – bridge 2 Angular scope toHost(msg) myTagcloud tagClicked() toGuest() toGuest() guestCallbacks OTNBridge hostCallBack() guests guestCallbacks
  • 16. 16 Integrating Angular Bridge into ADF applications • Containerize the AngularJS + Tagcloud + Bridge application (single JS file) • Create an ADF TaskFlow with a page fragment and PageFlowScope beans otnBridge and tagCloudBean – The former (generic) loads the JavaScript and publishes data to the AngularJS Scope – The latter (special) handles the ’tag is clicked event’
  • 17. 17 Integrating Angular Bridge into ADF applications ViewController Taskflow tagcloud MainPage.jspx Taskflow tagcloud Page Fragment tagcloud.jsff integration.js OTNBridge OTNBootstrapper tagcloud.js angularGuest tagcloud pageflowScope otnBridge tagCloudBean
  • 18. 18 TagCloudBean 1 4 3 2 5
  • 19. 19 Make AngularJS component bound on ADF Data Binding • The input parameter for the tagcloud Taskflow is set with a reference to the animalCloud bean in the (page’s) viewScope – This bean returns a list of tags – Alternatively, a reference to an ADF data bound collection could have been used ViewController Taskflow tagcloud pageflowScope otnBridge tags tagCloudBean viewScope animalCloud
  • 20. 20 Two TagClouds embedded in ADF page ViewController ` Taskflow tagcloud pageflowScope otnBridge tags tagCloudBean viewScope animalCloud carsCloud Taskflow tagcloud pageflowScope otnBridge tags tagCloudBean
  • 21. 21 Forwarding the tag clicked event from tagcloud to ADF • Event in Angular component is turned into ADF Contextual Event to be consumed in host (ADF) application ViewController Taskflow tagcloud pageflowScope viewScope tagCloudBean zooKeeper zebra
  • 22. 22 Client Side events in Angular – pushed to ADF client => server ViewController Taskflow tagcloud pageflowScope tagCloudBean OTNBridge hostCallBack() zebra
  • 23. 23 Consume ADF Contextual Event into Angular component • Actions in the ADF side of the applications can [need to have] consequences in the embedded components • ADF Contextual Events are the vehicle for this ‘from host to guest’ interaction – Just like they are for the reverse route • For example: add a tag from outside the TagCloud Taskflow
  • 24. Consume ADF Contextual Event into Angular component ViewController Taskflow tagcloud pageflowScope tagCloudBean 1 viewScope 2 4 zooKeeper parkingAttendant horse 3 5 6 7
  • 25. 25 Apply ADF Skinning to embedded Angular components • Skinning is a server side mechanism that generates CSS styles to apply to UI components rendered in the browser – CSS generation depends on selected skin, browser (version), locale, etc. • The objective right now: – apply these generated styles to the UI elements inside the embedded Angular TagCloud component – to make them assume the same look and feel • The challenge: – Skinning knows nothing about the embedded elements and vice versa. • The trick: – Add a number of invisible ‘dummy’ components in the ADF Tasfklow – At run time, using JavaScript, retrieve the skin-based CSS styles that are applied to these dummy components – Pass the style properties to the Angular scope [for each interested guest] and inside the guest, apply these properties to the target components
  • 26. ViewController Taskflow tagcloud pageflowScope tagCloudBean integration.js sendMessage ToGuest inspectStyles
  • 27.
  • 28. 28 Apply Resource Bundles & i18n to embedded Angular components • Internationalization (i18n) is the adaptation of the user interface to current locale (language, region) – ADF (and Java) uses resource bundles per language that contain key-value pairs for locale specific attributes – such as boilerplate text • The objective right now: – apply these translated values to i18n-enabled attributes in the embedded component • The challenge: – AngularJS and our JavaScript component are unaware of ADF Faces and of i18n based on resource bundles • The trick: – Add an invisble inputText component in the ADF Tasfklow – Define a clientAttribute on this component with a JSON collection that contains resource bundle entries – At run time, ADF Faces ensures that these entries are translated – Read the clientAttribute in JavaScript and pass the value to the guest
  • 29. ViewController Taskflow tagcloud pageflowScope tagCloudBean integration.js sendMessage ToGuest extractTagsFor Resource BundleEntries
  • 30.
  • 31. 31 Customize and Personalize the embedded AngularJS component • Customization and Personalization is the adaptation of the user interface based on context specific and personal settings and preferences – ADF supports design time and run time customizations to be created (in MDS) and to be applied at run time to UI components • The objective right now: – Create and apply customizations and personalizations to embedded Angular components such as the 3D Tag Cloud • The challenge: – AngularJS and our JavaScript component are unaware of ADF Faces and of customization and MDS • The trick: – Add invisible ADF Faces components in the ADF Tasfklow and define customizations on their properties in the regular way – To define customizations at run time – open a popup that shows ‘proxies’ for the UI elements in the embedded component and define customizations on those – At run time, ADF Faces ensures that customizations are applied according to the current content – Read the relevant customized properties in JavaScript and pass the values to the guest
  • 32. 32 World Cup 2014 Match Center
  • 33. 33 Summary and Conclusion • Rich Client web applications are popular – User experience is smooth and rich, optimally benefitting from HTML5 capabilities – Development is relatively simple and productive – Many resources are available • ADF provides an enterprise application framework – With a number of robust enterprise infrastructure facilities – Fairly thick-server architecture with large but limited set of UI components • ADF Web Applications can be enhanced using HTML5 components – (for example) AngularJS modules can be created as stand-alone components, then containerized and embedded in a reusable ADF Taskflow – Using contextual events, embedded components can exchange data and events with the ADF host and vice versa • Without sacrificing the benefits of ADF, organizations can benefit from many of the richness of HTML5

Editor's Notes

  1. Marrying together the worlds of ADF and HTML5 & AngularJS Leveraging the full power of HTML5 and the capacity of modern browsers, rich client applications are very popular right  now. In this session we will demonstrate how we can bring the world of HTML5 and AngularJS to ADF applications. We take rich reusable TagCloud component and integrate it into a standalone AngularJS application. Next we embed the AngularJS module inside an ADF TaskFlow. This taskflow is then reused in a regular ADF web application and participates in ADF skinning, internationalization and customization. The rich client component receives data from the ADF application and exchanges events with it. The flexibility, [multitude of] resources and richness in functionality offered from the HTML5/AngularJS world beyond ADF can still be integrated with and leveraged from ADF. This presentation provides a solid introduction into the question how to achieve thus.