View
4
Download
0
Category
Preview:
Citation preview
<Insert Picture Here>
Forms / ADF 11g Migration und InteroperabilitätBerthold Maier und Andreas Langer
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
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
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
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!
DEMO: Anwendungsfall - Kundenerfassung
Person erfassen
Adressvalidierung
Weiterverarbeitung Adresse
Akzeptierte Kreditinstitute
Kreditwürdigkets-
prüfung
Forms ADF
Demonstration
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
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
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
Kommunikationsprotokoll:
JaxB - XSD zur Generierug der Klassenstruktur
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
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.
Finale Anmerkungen
• Einschränkung: Keine übergreifende Transaktionen
• In Planung:
• Anwendung wird als VMWareImage bereitgestellt
• AF-Migrator -> Open Source
Recommended