adf-fusion-architecture_manage-modular-approach_4581

Post on 31-Oct-2014

495 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Fusion Apps ADF architecture

TRANSCRIPT

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

aino.andriessen@amis.nl

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

55

56

top related