adf-fusion-architecture_manage-modular-approach_4581
DESCRIPTION
Fusion Apps ADF architectureTRANSCRIPT
CON4581
Aino Andriessen, 24 september 2013
ADF Fusion architecture: manage the modular approach
2
Aino Andriessen
Technical Consultant
Technical Architect
Training
ADF, Java, PL/SQL, XML, ...
SOA , Integration
Software engineering
Agile
http://www.fttech.net
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/
4
Architectural patterns
5
Simple application
6
Small application
7
Monster application
8
Enterprise
9
ADF Architecture
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
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
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
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
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
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
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
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
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
19
Implementation patterns
Basic ADF Application
ADF Model
ADF ViewController
20
DB
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
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
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
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
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
Service BTF
26
Multi Channel
Domain
Entities, lov's
AM, VO AM, VO
ADF Mobile
Mobile Browser
Service
Consumer
BC
SOA
BTF
Main
27
28
Implementation
29
Goal
Organize the application(s) in manageable components while maintaining optimal development experience
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
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
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
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…
34
35
Challenges
• Manage the build
• Artifact management
• Library management
• Versioning
• Sources and JavaDoc
• Deployment
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
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
38
Continuous Integration
Artifact management
• Central environment to store and manage deliverables / artifacts
• Publish and download:
40
Delivery
41
Maven ant tasks
42
Library management
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
• 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
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
46
ant Manifest
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
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
49
• this page is left blank intentionally
50
51
Summary
• Modularization allows for better understandability and manageability
• Choose the right architecture
• Module autonomy
• Build automation
• JDeveloper doesn't always provide optimal support
52
53
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
55
56