adf-fusion-architecture_manage-modular-approach_4581

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

Upload: berry-clemens

Post on 31-Oct-2014

495 views

Category:

Technology


1 download

DESCRIPTION

Fusion Apps ADF architecture

TRANSCRIPT

Page 1: Adf-fusion-architecture_manage-modular-approach_4581

CON4581

Aino Andriessen, 24 september 2013

ADF Fusion architecture: manage the modular approach

Page 2: Adf-fusion-architecture_manage-modular-approach_4581

2

Aino Andriessen

Technical Consultant

Technical Architect

Training

ADF, Java, PL/SQL, XML, ...

SOA , Integration

Software engineering

Agile

[email protected]

http://www.fttech.net

Page 3: Adf-fusion-architecture_manage-modular-approach_4581

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

4

Architectural patterns

Page 5: Adf-fusion-architecture_manage-modular-approach_4581

5

Simple application

Page 6: Adf-fusion-architecture_manage-modular-approach_4581

6

Small application

Page 7: Adf-fusion-architecture_manage-modular-approach_4581

7

Monster application

Page 8: Adf-fusion-architecture_manage-modular-approach_4581

8

Enterprise

Page 9: Adf-fusion-architecture_manage-modular-approach_4581

9

ADF Architecture

Page 10: Adf-fusion-architecture_manage-modular-approach_4581

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

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

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

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

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

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

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

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

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

19

Implementation patterns

Page 20: Adf-fusion-architecture_manage-modular-approach_4581

Basic ADF Application

ADF Model

ADF ViewController

20

DB

Page 21: Adf-fusion-architecture_manage-modular-approach_4581

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

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

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

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

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

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

27

Page 28: Adf-fusion-architecture_manage-modular-approach_4581

28

Implementation

Page 29: Adf-fusion-architecture_manage-modular-approach_4581

29

Goal

Organize the application(s) in manageable components while maintaining optimal development experience

Page 30: Adf-fusion-architecture_manage-modular-approach_4581

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

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

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

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

34

Page 35: Adf-fusion-architecture_manage-modular-approach_4581

35

Challenges

• Manage the build

• Artifact management

• Library management

• Versioning

• Sources and JavaDoc

• Deployment

Page 36: Adf-fusion-architecture_manage-modular-approach_4581

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

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

38

Continuous Integration

Page 39: Adf-fusion-architecture_manage-modular-approach_4581

Artifact management

• Central environment to store and manage deliverables / artifacts

• Publish and download:

Page 40: Adf-fusion-architecture_manage-modular-approach_4581

40

Delivery

Page 41: Adf-fusion-architecture_manage-modular-approach_4581

41

Maven ant tasks

Page 42: Adf-fusion-architecture_manage-modular-approach_4581

42

Library management

Page 43: Adf-fusion-architecture_manage-modular-approach_4581

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

• 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

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

46

ant Manifest

Page 47: Adf-fusion-architecture_manage-modular-approach_4581

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

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

49

• this page is left blank intentionally

Page 50: Adf-fusion-architecture_manage-modular-approach_4581

50

Page 51: Adf-fusion-architecture_manage-modular-approach_4581

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

52

Page 53: Adf-fusion-architecture_manage-modular-approach_4581

53

Page 55: Adf-fusion-architecture_manage-modular-approach_4581

55

Page 56: Adf-fusion-architecture_manage-modular-approach_4581

56