16

- Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,
Page 2: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

<Insert Picture Here>

Forms / ADF 11g Migration und InteroperabilitätBerthold Maier und Andreas Langer

Page 3: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

Agenda• Problemstellung• Herausforderungen• Framework: AF-Integrator• Demonstration• Anwendungsfall • Lösungsansätze• Warum ADF 11g?• Technologieübersicht• Kommunikationsprotokoll• Interoperabilität Forms / ADF• Page Flow Stacking• Finale Anmerkungen

Page 4: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

ProblemstellungMigrationsmöglichkeiten von Forms 6i auf Java Web App

• Migrationsarten:• JHeadstart (Ideal für 1:1 Überführung)• Neuentwicklung auf Framworkbasis z.B. ADF, Spring, ...• Paralelles Bereitstellen der Forms und der Webanwendung• Komplettes Ablösen der Formsanwendung durch die Webanwendung

• Technologiewechsel und SOA fordern meist eine Neugestaltung der Oberfläche: • z.B. Prozessorientierte GUI• Neu Design und Ergonomierichtlinien

• Schleichende Migration• Teile der Anwendung werden schrittweise in die neue Technologie

überführt• Einbindung von WebForms in WebMasken• Integrativer Parallelbetrieb Forms (Version 6) und Webanwendung

Page 5: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

Herausforderungen

• Client-Server-Anwendung soll mit Webanwendung interagieren • Ziel: Forms soll die WebAnwendung wie ein Dialog ansprechen - VisaVersa• Forms Frontend-Client muss Serveranwendung steuern - VisaVersa• Dialogwechsel muss für den Anwender transparent sein

• Recursive Aufrufe: z.B. Forms -> Web -> Forms –> Web -> Web -> Forms -> Forms

• Kommunikationsbasis • Fordert Datenaustauschformat zwischen Forms / Java• Kommunikationsprotokoll muss definiert werden • Dialoge müssen Wartezustand initiieren • Stackingmechanismus von Forms 6i ist im Web nachzubilden• Statemanagement: Masken dürfen sich bei Rekursiven Aufrufen nicht

überschreiben

Page 6: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

Framework: AF-Integrator

• Framework zur nahtlosen Integration von ADF und Forms durch den AF-Integrator

• Ziel: • Neutral für den Anwendungsentwickler in Forms und ADF

• 1:1 Verwendung der ADF-PageFlows innerhalb einer geschlossen WebAnwendung, Portal, Forms, usw.

• ADFLib wird als Java Lib. (af-integrator.jar) transparent eingebunden

• OpenSource in Planung!

Page 7: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

DEMO: Anwendungsfall - Kundenerfassung

Person erfassen

Adressvalidierung

Weiterverarbeitung Adresse

Akzeptierte Kreditinstitute

Kreditwürdigkets-

prüfung

Forms ADF

Page 8: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

Demonstration

Page 9: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

Lösungsansätze

• Framworks wie Struts, native JSF, … scheiden aus, da der Controller keine Statemachine (Statemanagement)

• Frameworkauswahl:• ADF 11g Page Flows besitzen Stackingmechanismus• SpringWebflow möglich, integriert sich jedoch nicht ideal in JSF

• Kommunikationsmechanismus • RMI, Socket, EJB, … scheiden wegen proprietärer Technologie aus• Oracle DB bietet Advanced Queuing als sequentiellen

Nachrichtenmechanismus und ist in Java und Forms verfügbar• JMS dient als Kommunikationsschnittstelle in Java

• Einfache Einbindung per SpringFramework• XML als neutrales und übergreifendes Protokoll, zur Parameterübergabe

• JaxB bietet eine einfache Möglichkeit Java-Objekte in XML zu transformieren

• Zugriffs-API per XMLType in der DB/Forms

Page 10: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

Warum ADF 11g?

• Notwendige ADFFaces Erweiterungen in 11g• ADF - Controller/Flow – Statemachine

• BoundedFlow & Unbounded Flow

• ADF – Statemanagement

• ADF – Active Data Service (Ajax)

• ADF-Komponenten und Reuse

• ADF-Library

• 90% Deklerativ -> Einfach

Page 11: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

Technologieübersicht

Oracle DB

Advanced Queuing

Spring / JM

S Native PL/SQL<<Xml-Message>> <<Xml-Message>>

JAX

b2.0

marshal

unmarshal

AD

F 11g

Forms 6i

2 Queues

2 PL/SQL Funktionen zur Kommunikation

Umwandeln der Kommunikationsdaten

Timer für Wartezustand

Page 12: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

Kommunikationsprotokoll:

JaxB - XSD zur Generierug der Klassenstruktur

Page 13: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

FORMS

ADF

Forms2ADF-Queue

ADF2Forms-Queue

FORMS

ADF

Forms2ADF-Queue

ADF2Forms-Queue

Forms2

Forms1

ADF1

ADF2

FORMS

2.1

1.1

ADF

Forms2ADF-Queue

ADF2Forms-Queue

Forms2

Forms1

ADF1

ADF2

FORMS

ADF

Forms2ADF-Queue

ADF2Forms-Queue

Forms2

Forms1

ADF1

ADF2

1.12.1

Die Reihenfolge der Nachrichten spielt keine Rolle!

FORMS

ADF

Forms2ADF-Queue

ADF2Forms-Queue

Forms2

Forms1

ADF1

ADF2

1.1

2.1

FORMS

ADF

Forms2ADF-Queue

ADF2Forms-Queue

Forms2

Forms1

ADF1

ADF22.2

1.2

FORMS

ADF

Forms2ADF-Queue

ADF2Forms-Queue

Forms2

Forms1

ADF1

ADF2

2.21.2

FORMS

ADF

Forms2ADF-Queue

ADF2Forms-Queue

Forms2

Forms1

ADF1

ADF2

2.2

1.2

Multiuser-Szenario:

Forms1 startet ADF1

Forms2 startet ADF2

Start-Parameter:

- SessionToken

- SecurityToken

- Benutzername

Interoperabilität Forms / ADF

enque deque

XML-Nachrichten-Header:

- <SessionToken >.<FlowToken >

- Navigationsdirektive

- Security Token

- Benutzername

XML-Body

- Messages

- KeyValuePairs

dequeenque

- SessionToken bleibt gleich

- Neuer UID für FlowToken

� FlowStack wird weiter aufgebaut

Page 14: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

PageFlow-Stacking

Initialisierungs-FlowInitialisierungs-FlowInitialisierungs-Flow

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-FlowWaitForResponse-Flow

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-Flow

Dispatcher-Flow

Dispatcher-Flow

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-Flow

Dispatcher-Flow Fachlicher-Flow

Fachlicher-Flow und T-Adapter

test-A1-Flow

test-call-forms-A1-Flow

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-Flow

Dispatcher-Flow Fachlicher-Flow

Communication-Flow

Communication-Flow

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-Flow

Dispatcher-Flow Fachlicher-Flow

Communication-FlowRekursion

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-Flow

Dispatcher-Flow Fachlicher-Flow

Communication-FlowRekursion

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-Flow

Dispatcher-Flow Fachlicher-Flow

Communication-FlowRekursion

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-Flow

Dispatcher-Flow Fachlicher-Flow

Communication-FlowRekursion

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-Flow

Dispatcher-Flow Fachlicher-Flow

Communication-FlowRekursion

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-Flow

Dispatcher-Flow Fachlicher-Flow

Communication-FlowAbbau

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-Flow

Dispatcher-Flow Fachlicher-Flow

Communication-FlowAbbau

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-Flow

Dispatcher-Flow Fachlicher-Flow

Communication-FlowAbbau

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-Flow

Dispatcher-Flow Fachlicher-Flow

Communication-FlowAbbau

WaitForResponse-Flow

Initialisierungs-FlowInitialisierungs-Flow

Dispatcher-Flow Fachlicher-Flow

Communication-FlowAbbau

u.s.w.

Page 15: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,

Finale Anmerkungen

• Einschränkung: Keine übergreifende Transaktionen

• In Planung:

• Anwendung wird als VMWareImage bereitgestellt

• AF-Migrator -> Open Source

Page 16: - Oracle · keine Statemachine (Statemanagement) • Frameworkauswahl: • ADF 11g Page Flows besitzen Stackingmechanismus • SpringWebflow möglich,