ADF Fusion architecture: manage
the modular approach
CON4581
Aino Andriessen, 24 september 2013
2

Aino Andriessen
Technical Consultant
Technical Architect
Training
ADF, Java, PL/SQL, XML, ...
SOA , Integration
Softwar...
3

•
•
•
•
•

Systems integrator
Consultancy
Oracle, Java, Open Source, ADF, SOA, BPM, Database, Mobile, ...
AMIS Technolo...
4

Architectural patterns
5

Simple application
6

Small application
7

Monster application
8

Enterprise
9

ADF Architecture
10

ADF Pattern genealogy

Sum of the
Parts

Two for One
Deal

Cylinder
Monster

Fine Grained
Small
Application

Small and...
11

Small application
• One application workspace = one deployment EAR
• Model: ADF Business Components
– Moderate amount ...
12

Small application

Application Workspace
Model

View Objects
AppModule

Framework
Extensions

Entity Objects

ViewCont...
13

Small Application
Advantages
• Simple architecture
– Easy to build and deploy

• Suits small teams and/or
small apps
•...
14

Monster application
• Synonyms: uber, monolithic
• One application workspace = one deployment EAR

• Model
– Many, man...
15

Monster Application
Application Workspace
Model
Entity Objects

Entity Objects

View Objects

View Objects

View Objec...
16

Monster application
Advantages

Disadvantages

•

Relatively simple architecture
still

•
•

•

Bounded Task Flows

•
...
17

Modular ADF
Architectures
Sum of the
Parts

Two for One
Deal

Cylinder
Monster

Fine Grained
Small
Application

Small ...
18

Examples
• Shop
• Insurance application
– Policies, Customers, Cases, Claims, Commission, Financials, …

• Judicial sy...
19

Implementation patterns
20

Basic ADF Application

ADF ViewController

ADF Model

DB
21

Modularization 1
Main

Main

Main

EAR
ADF Lib

ADF Lib

ADF Lib

ADF Lib

Party

Policy

Claim

…

ADF Lib

Comm
ons
...
22

Modularization 2
Main
EAR
ADF Lib

ADF Lib

ADF Lib

ADF Lib

Party

Policy

Claim

…

ADF Lib

Comm
ons
ADF Lib

ADF ...
23

Modularization 2a
Main
EAR
ADF Lib

ADF Lib

ADF Lib

ADF Lib

Party

Policy

Claim

…

ADF Lib

Comm
ons
ADF Lib

Par...
24

Modularization 2b
Main
EAR
ADF Lib

Taskflows

ADF Lib

ADF Lib

ADF Lib

Party

Policy

Claim

…

Comm
ons

AM
Viewob...
25

Module interdependencies
Main

Main
ADF Lib

ADF Lib

ADF Lib

ADF Lib

Party

Policy

Party

Policy

PParty

PPolicy
...
26

Multi Channel
Mobile

SOA

Browser

ADF Mobile

Consumer

Main

Service
Service
AM, VO

BC

BTF
BTF
AM, VO

Domain
Ent...
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
–
–
–
–
–
–...
31

General principals
• Each workspace is able to run / tested on its own
• Full debugging must be available everywhere
–...
32

Development Issues
•
•
•
•
•

Every object must be unique, worldwide
UI (page, tf, pagedef) hot deployment is only pos...
33

Single workspace nightmare
• May sound as a good idea: start small and grow bigger
• Use working sets to organize the ...
34
35

Challenges
•
•
•
•
•
•

Manage the build
Artifact management
Library management
Versioning
Sources and JavaDoc
Deploym...
36

The importance of being
automated
•
•
•
•

Deliver adf libraries and ear
Deploy
Test
…

•
•
•
•
•
•
•
•
•
•
•
•

Consi...
37

Build automation
• 11g: ant
• 12c: Maven
• Tasks
–
–
–
–
–
–

Package
source, javadoc jar
Version / build information
...
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 libr...
44

ADF library dependencies
•
•
•
•

Dependencies of ADF libraries
Included in the consuming project
Works as a charm
ADF...
45

Artifact versioning
• Always provide version information
– MANIFEST.MF
•

define in deploy profile

– Filename
– WLS D...
46

ant Manifest
47

Sources and JavaDoc
• Always deliver sources and javadoc
• ant / maven tasks
• sources jar can also be generated with ...
48

Organize the build
• Multiple build files
– Build project
– per application
– per project

• Split build files
– build...
49

• this page is left blank intentionally
50
51

Summary
•
•
•
•
•

Modularization allows for better understandability and manageability
Choose the right architecture
...
52
53
54

References
• Chris Muir - One size doesn't fit all: Oracle ADF Architecture
Fundamentals - CON2203 - Thursday, Sep 26,...
55
56
Upcoming SlideShare
Loading in …5
×

Adf-fusion-architecture_manage-modular-approach_4581

917 views

Published on

Fusion Apps ADF architecture

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

Adf-fusion-architecture_manage-modular-approach_4581

  1. 1. ADF Fusion architecture: manage the modular approach CON4581 Aino Andriessen, 24 september 2013
  2. 2. 2 Aino Andriessen Technical Consultant Technical Architect Training ADF, Java, PL/SQL, XML, ... SOA , Integration Software engineering Agile aino.andriessen@amis.nl http://www.fttech.net
  3. 3. 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. 4. 4 Architectural patterns
  5. 5. 5 Simple application
  6. 6. 6 Small application
  7. 7. 7 Monster application
  8. 8. 8 Enterprise
  9. 9. 9 ADF Architecture
  10. 10. 10 ADF Pattern genealogy Sum of the Parts Two for One Deal Cylinder Monster Fine Grained Small Application Small and Simple Application Source: Chris Muir, Oracle Corporation - One size doesn't fit all - Oracle ADF Architecture Fundamentals Pillar
  11. 11. 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. 12. 12 Small application Application Workspace Model View Objects AppModule Framework Extensions Entity Objects ViewController Bounded Task Flow Fragments Fragments Bounded Task Flow Fragments Task Flow Template Page Template Declarative Components Skin Source: Chris Muir, Oracle Corporation - One size doesn't fit all - Oracle ADF Architecture Fundamentals EAR Pages Bounded Task Flow ViewController Extensions Unbounded Task Flow
  13. 13. 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. 14. 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. 15. 15 Monster Application Application Workspace Model Entity Objects Entity Objects View Objects View Objects View Objects AppModule AppModule AppModule Framework Extensions Entity Objects AppModule ViewController Pages Fragments Bounded Task Flow Fragments Bounded Task Flow Fragments Fragments Bounded Task Flow Fragments Bounded Task Flow Fragments Bounded Task Flow Fragments Task Flow Templates Page Templates Declarative Components Skins Bounded Task Flow Fragments Bounded Task Flow Fragments Source: Chris Muir, Oracle Corporation - One size doesn't fit all - Oracle ADF Architecture Fundamentals EAR Bounded Task Flow Bounded Task Flow ViewController Extensions Unbounded Task Flow
  16. 16. 16 Monster application Advantages Disadvantages • Relatively simple architecture still • • • Bounded Task Flows • Requires little development infrastructure • • 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. 17. 17 Modular ADF Architectures Sum of the Parts Two for One Deal Cylinder Monster Fine Grained Small Application Small and Simple Application Source: Chris Muir, Oracle Corporation - One size doesn't fit all - Oracle ADF Architecture Fundamentals Pillar
  18. 18. 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. 19. 19 Implementation patterns
  20. 20. 20 Basic ADF Application ADF ViewController ADF Model DB
  21. 21. 21 Modularization 1 Main Main Main EAR ADF Lib ADF Lib ADF Lib ADF Lib Party Policy Claim … ADF Lib Comm ons ADF Lib Fwkext DB
  22. 22. 22 Modularization 2 Main EAR ADF Lib ADF Lib ADF Lib ADF Lib Party Policy Claim … ADF Lib Comm ons ADF Lib ADF Lib ADF Lib ADF Lib ADF Lib Party Policy Claim … Fwkext DB
  23. 23. 23 Modularization 2a Main EAR ADF Lib ADF Lib ADF Lib ADF Lib Party Policy Claim … ADF Lib Comm ons ADF Lib Party Policy Claim DB ADF Lib … Fwkext
  24. 24. 24 Modularization 2b Main EAR ADF Lib Taskflows ADF Lib ADF Lib ADF Lib Party Policy Claim … Comm ons AM Viewobjects ADF Lib Entities / LOV ADF Lib Party ADF Lib ADF Lib Policy Claim DB ADF Lib ADF Lib … Fwkext
  25. 25. 25 Module interdependencies Main Main ADF Lib ADF Lib ADF Lib ADF Lib Party Policy Party Policy PParty PPolicy 1 Main ADF Lib ADF Lib Main ADF Lib ADF Lib ADF Lib ADF Lib ParPol Party Party 3 Policy 4 Policy 2 ADF Lib
  26. 26. 26 Multi Channel Mobile SOA Browser ADF Mobile Consumer Main Service Service AM, VO BC BTF BTF AM, VO Domain Entities, lov's
  27. 27. 27
  28. 28. 28 Implementation
  29. 29. 29 Goal Organize the application(s) in manageable components while maintaining optimal development experience
  30. 30. 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. 31. 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. 32. 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. 33. 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. 34. 34
  35. 35. 35 Challenges • • • • • • Manage the build Artifact management Library management Versioning Sources and JavaDoc Deployment
  36. 36. 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. 37. 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. 38. 38 Continuous Integration
  39. 39. Artifact management • Central environment to store and manage deliverables / artifacts • Publish and download:
  40. 40. 40 Delivery
  41. 41. 41 Maven ant tasks
  42. 42. 42 Library management
  43. 43. 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
  44. 44. 44 ADF library dependencies • • • • 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 main -> HR -> commons
  45. 45. 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. 46. 46 ant Manifest
  47. 47. 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. 48. 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. 49. 49 • this page is left blank intentionally
  50. 50. 50
  51. 51. 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. 52. 52
  53. 53. 53
  54. 54. 54 References • Chris Muir - One size doesn't fit all: Oracle ADF Architecture Fundamentals - CON2203 - Thursday, Sep 26, 11:00 AM - 12:00 PM Golden Gate A • ADF EMG • Oracle ADF Architecture Square • ADF Code Guidelines • ADF Naming and Project Layout Guidelines - Marriott Marquis -
  55. 55. 55
  56. 56. 56

×