adf-fusion-architecture_manage-modular-approach_4581
DESCRIPTION
Fusion Apps ADF architectureTRANSCRIPT
![Page 1: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/1.jpg)
CON4581
Aino Andriessen, 24 september 2013
ADF Fusion architecture: manage the modular approach
![Page 2: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/2.jpg)
2
Aino Andriessen
Technical Consultant
Technical Architect
Training
ADF, Java, PL/SQL, XML, ...
SOA , Integration
Software engineering
Agile
http://www.fttech.net
![Page 3: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/3.jpg)
3
• Systems integrator
• Consultancy
• Oracle, Java, Open Source, ADF, SOA, BPM, Database, Mobile, ...
• AMIS Technology School
• Pagoni
• http://www.amis.nl
• http://technology.amis.nl/blog/
![Page 4: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/4.jpg)
4
Architectural patterns
![Page 5: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/5.jpg)
5
Simple application
![Page 6: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/6.jpg)
6
Small application
![Page 7: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/7.jpg)
7
Monster application
![Page 8: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/8.jpg)
8
Enterprise
![Page 9: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/9.jpg)
9
ADF Architecture
![Page 10: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/10.jpg)
10
ADF Pattern genealogy
Source: Chris Muir, Oracle Corporation - One size doesn't fit all - Oracle ADF Architecture Fundamentals
Fine Grained
Small and
Simple
Application
Monster
Two for One
Deal
Sum of the
Parts
Cylinder Pillar
Small
Application
![Page 11: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/11.jpg)
11
Small application
• One application workspace = one deployment EAR
• Model: ADF Business Components
– Moderate amount of BC's
– One or a few Application Modules
• ViewController
– One Unbounded Task Flow
– Some Bounded Task Flows
– Some page fragments
– One or a few pages
Source: Chris Muir, Oracle Corporation - One size doesn't fit all - Oracle ADF Architecture Fundamentals
![Page 12: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/12.jpg)
12
Small application
Application Workspace
Model
Entity Objects
View Objects
AppModule
Fra
me
wo
rk
Exte
nsio
ns
ViewController
Unbounded Task Flow Vie
wC
on
trolle
r
Exte
nsio
ns
Task Flow Template
Declarative Components
Skin
Pages Page Template
Bounded Task Flow
Fragments
Bounded Task Flow
Fragments
Bounded Task Flow
Fragments
EA
R
Source: Chris Muir, Oracle Corporation - One size doesn't fit all - Oracle ADF Architecture Fundamentals
![Page 13: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/13.jpg)
13
Small Application
Advantages
• Simple architecture – Easy to build and deploy
• Suits small teams and/or small apps
• Bounded Task Flows – Improved business process to
design mapping
– Improved modularization but not perfect
– Options such as transaction features (vs root ADF BC AMs)
– Programming by contract now possible
• Improved ability to test modules
• Requires little development infrastructure
Disadvantages
• Developers can still
accidentally tightly couple
code
• Bounded Task Flows aren’t
externally reusable
• Application tends to grow in
size
![Page 14: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/14.jpg)
14
Monster application
• Synonyms: uber, monolithic
• One application workspace = one deployment EAR
• Model
– Many, many BC's
– Multiple Application Modules
• ViewController
– One Unbounded Task Flow
– Many Bounded Task Flows
– Many page fragments
– Multiple Pages
Source: Chris Muir, Oracle Corporation - One size doesn't fit all - Oracle ADF Architecture Fundamentals
![Page 15: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/15.jpg)
15
Monster Application Application Workspace
Model
Entity Objects
View Objects
AppModule
Fra
me
wo
rk
Exte
nsio
ns
ViewController
Unbounded Task Flow Vie
wC
on
trolle
r
Exte
nsio
ns
Task Flow Templates
Declarative Components
Skins
Pages Page Templates
Bounded Task Flow
Fragments
Bounded Task Flow
Fragments
Bounded Task Flow
Fragments
EA
R
Bounded Task Flow
Fragments
Bounded Task Flow
Fragments
Bounded Task Flow
Fragments
Bounded Task Flow
Fragments
Bounded Task Flow
Fragments
Bounded Task Flow
Fragments
Entity Objects
View Objects
AppModule
Entity Objects
View Objects
AppModule
AppModule
Source: Chris Muir, Oracle Corporation - One size doesn't fit all - Oracle ADF Architecture Fundamentals
![Page 16: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/16.jpg)
16
Monster application
Advantages
• Relatively simple architecture
still
• Bounded Task Flows
• Requires little development
infrastructure
Disadvantages
• Hard to maintain
• Size (# of objects)
– Difficult to understand and
oversee everything
– Dependencies
– Developer's don’t dare to
touch existing code
• Build is an all or nothing affair
• Bounded Task Flows
transaction options can be
complicated
Source: Chris Muir, Oracle Corporation - One size doesn't fit all - Oracle ADF Architecture Fundamentals
![Page 17: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/17.jpg)
17
Modular ADF Architectures
Fine Grained
Small and
Simple
Application
Monster
Two for One
Deal
Sum of the
Parts
Cylinder Pillar
Small
Application
Source: Chris Muir, Oracle Corporation - One size doesn't fit all - Oracle ADF Architecture Fundamentals
![Page 18: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/18.jpg)
18
Examples
• Shop
• Insurance application
– Policies, Customers, Cases, Claims, Commission, Financials, …
• Judicial system
• Booking system
• … Business application
• Multiple small applications with repeated functionalities
• Multi-brand application
• Multi channel
– web, desktop, mobile, services
![Page 19: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/19.jpg)
19
Implementation patterns
![Page 20: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/20.jpg)
Basic ADF Application
ADF Model
ADF ViewController
20
DB
![Page 21: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/21.jpg)
Modularization 1
Party Policy Claim …
Main
ADF Lib ADF Lib ADF Lib ADF Lib
Fwk-
ext
Comm
ons
ADF Lib
ADF Lib
EAR
21
DB
Main Main
![Page 22: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/22.jpg)
Modularization 2
Party
Party
Policy
Policy
Claim
Claim
…
…
Main
Fwk-
ext
Comm
ons
ADF Lib ADF Lib ADF Lib ADF Lib
ADF Lib
ADF Lib
ADF Lib ADF Lib ADF Lib ADF Lib
EAR
22
DB
![Page 23: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/23.jpg)
Modularization 2a
Party
Party
Policy
Policy
Claim
Claim
…
…
Main
Fwk-
ext
Comm
ons
ADF Lib ADF Lib ADF Lib ADF Lib
ADF Lib
ADF Lib
ADF Lib
EAR
23
DB
![Page 24: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/24.jpg)
Modularization 2b
DB
Party
Party
Policy
Policy
Claim
Claim
…
…
Main
Fwk-
ext
Comm
ons
ADF Lib ADF Lib ADF Lib ADF Lib
ADF Lib
ADF Lib
ADF Lib ADF Lib ADF Lib ADF Lib
Entities / LOV
Taskflows
EAR
24
AM
Viewobjects
![Page 25: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/25.jpg)
25
Module interdependencies
ADF Lib ADF Lib
Party Policy
Main
1
ADF Lib ADF Lib
Party Policy
ADF Lib ADF Lib
Main
PParty PPolicy
2
ADF Lib ADF Lib
Party Policy
Main
ParPol
ADF Lib
3
ADF Lib ADF Lib
Party Policy
Main
4
![Page 26: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/26.jpg)
Service BTF
26
Multi Channel
Domain
Entities, lov's
AM, VO AM, VO
ADF Mobile
Mobile Browser
Service
Consumer
BC
SOA
BTF
Main
![Page 27: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/27.jpg)
27
![Page 28: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/28.jpg)
28
Implementation
![Page 29: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/29.jpg)
29
Goal
Organize the application(s) in manageable components while maintaining optimal development experience
![Page 30: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/30.jpg)
30
Organization - general
• One workspace for main
• One workspace per 'unit'
• One or more common workspaces
– Framework extensions
– Declarative components
– Taskflow templates
– Pagetemplates
– Skins
– Utilities
• Each 'unit' is delivered as an ADF library
![Page 31: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/31.jpg)
31
General principals
• Each workspace is able to run / tested on its own
• Full debugging must be available everywhere
– sources libraries
• Automated build, test, deliver and deploy process
![Page 32: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/32.jpg)
32
Development Issues
• Every object must be unique, worldwide
• UI (page, tf, pagedef) hot deployment is only possible within a project
• Libraries cannot be hot-deployed
• Taskflows must be delivered in an ADF library to be used elsewhere
• Testing taskflows
– Testpages (and pagedefs) and setup
– ADF EMG Taskflow Tester
• Limited ADF library configuration
• Refactoring over projects
• Build automation (with ant) is not easy
![Page 33: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/33.jpg)
33
Single workspace nightmare
• May sound as a good idea: start small and grow bigger
• Use working sets to organize the projects within the workspace
But…
• Boundaries become fuzzy
• Running the application can be slow
• Testing is a problem
• Workspace might grow organically
• Using taskflows is confusing
• Hot deployment issues
• Fighting the framework
• Beware for the monster…
![Page 34: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/34.jpg)
34
![Page 35: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/35.jpg)
35
Challenges
• Manage the build
• Artifact management
• Library management
• Versioning
• Sources and JavaDoc
• Deployment
![Page 36: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/36.jpg)
36
The importance of being automated
• Deliver adf libraries and ear
• Deploy
• Test
• …
• Consistent
• Less mistakes
• Easier
• Faster
• Fun
• Everybody's party
• Repeatable
• Predictable
• Transparent
• Trackable
• Reporting
• Reuse
![Page 37: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/37.jpg)
37
Build automation
• 11g: ant
• 12c: Maven
• Tasks
– Package
– source, javadoc jar
– Version / build information
– Publish to artifact repository
– Release
– Deploy to WLS • latest
• version
![Page 38: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/38.jpg)
38
Continuous Integration
![Page 39: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/39.jpg)
Artifact management
• Central environment to store and manage deliverables / artifacts
• Publish and download:
![Page 40: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/40.jpg)
40
Delivery
![Page 41: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/41.jpg)
41
Maven ant tasks
![Page 42: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/42.jpg)
42
Library management
![Page 43: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/43.jpg)
43
Where to store (adf) libraries?
• ant
– project lib directory
• Maven
– local repository
• Internal Application libraries
– Build them locally and then deploy them to lib dir / local repo
– Don't submit then to scm but build them when needed
• External libraries (aka dependencies):
– Download from artifact repository
main -> HR
-> OE
![Page 44: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/44.jpg)
• Dependencies of ADF libraries
• Included in the consuming project
• Works as a charm
• ADF_Library_Dependencies.library
• Multiple versions of nl/amis/demo/hr/view/DataBindings.cpx appear in your project run classpath
– Path is not world-wide unique
– Circular dependency: project itself is included as library
because its used by dependent project
44
ADF library dependencies
main -> HR -> commons
![Page 45: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/45.jpg)
45
Artifact versioning
• Always provide version information
– MANIFEST.MF • define in deploy profile
– Filename
– WLS Deployment version • Manifest entry: Weblogic-Application-Version
• Remarks
– OJDeploy failure when manifest file fails
– 'Internal' libraries could do without version in the file name
– max # of redeployments on WLS
– Update library definition
– Use ojdeploy outputfile parameter for version in filename
– Store version in local file to be used in ant build scripts
– scm revision
![Page 46: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/46.jpg)
46
ant Manifest
![Page 47: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/47.jpg)
47
Sources and JavaDoc
• Always deliver sources and javadoc
• ant / maven tasks
• sources jar can also be generated with separate deploy profile
• Include as project library
![Page 48: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/48.jpg)
48
Organize the build
• Multiple build files
– Build project
– per application
– per project
• Split build files
– build, artifact mgt, build-info, deploy
• Fix the generated build files
• Consistent naming
– use prefixes
• Externalize properties
• Manage project ant settings
• Reuse using svn externals
• Build scripting is hard
![Page 49: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/49.jpg)
49
• this page is left blank intentionally
![Page 50: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/50.jpg)
50
![Page 51: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/51.jpg)
51
Summary
• Modularization allows for better understandability and manageability
• Choose the right architecture
• Module autonomy
• Build automation
• JDeveloper doesn't always provide optimal support
![Page 52: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/52.jpg)
52
![Page 53: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/53.jpg)
53
![Page 54: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/54.jpg)
54
References
• Chris Muir - One size doesn't fit all: Oracle ADF Architecture Fundamentals - CON2203 - Thursday, Sep 26, 11:00 AM - 12:00 PM - Marriott Marquis -
Golden Gate A
• ADF EMG
• Oracle ADF Architecture Square
• ADF Code Guidelines
• ADF Naming and Project Layout Guidelines
![Page 55: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/55.jpg)
55
![Page 56: Adf-fusion-architecture_manage-modular-approach_4581](https://reader033.vdocuments.mx/reader033/viewer/2022051608/545437a4b1af9f84228b49c4/html5/thumbnails/56.jpg)
56