Integration von Oracle Forms in Service Oriented Architecture (SOA)
Jürgen MengeOracle Deutschland
The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions.The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
HTTPHTTPServerServer
OC4JOC4JServletServlet EngineEngine
FormsFormsRuntimeRuntime
11
Application Tier Database TierClient Tier
FormsFormsServletServlet
MOD_OC4JMOD_OC4J
FormsFormsListenerListenerServletServlet FormsForms
RuntimeRuntime22
Client 1Client 1
Client 2Client 2
Inte
rnet
OracleAS 10 g Forms Services
Clie
nt s
ide
Fire
wal
lC
lient
sid
e F
irew
all
Inte
rnet
Ser
ver
side
Fire
wal
lS
erve
r si
de F
irew
all
� zentrales DeploymentOracle Forms Runtime + compiled Files
Forms
J2EE
Oracle Application Server
GemeinsameSicherheit
GemeinsameAdministration
GemeinsameGeschäftslogik
Integration von Forms in den OracleAS
Java
Enterprise Manager
Single Sign-On
• Client-side Java• Pluggable Java Components (PJC) und Java Beans• Oberflächenelemente und Logik auf dem Client
• WebUtil ist eine Bibliothek von PJC und Java Beans
• Server-side Java• Ausführung von Logik im Application Server
• Einbindung in Forms mittels des Java Importer• z.B. Java-Klassen, EJBs
• Integration mit Web-Services• Voraussetzung für service-orientierte Architekturen (SOA)
• Verarbeitung von XML
Integration mit Java, XML und Web Services
Implementierung mit Forms 6 i
Implementierung mit WebForms
• Möglichkeiten• Java Classes• EJB• ADF Components for Java• Web Services• Java Stored Procedures
• Erzeugung eines PL/SQL Wrappers durch den Java Importer
• Built-In ORA_JAVA mit Standardfunktionen• Aufrufstack:
PL/SQL => C => JNI (Java Native Interface) => Java
Server-side Java
• Unterstützung für• Arrays• Exceptions• Objects • Methods• Attributes• Static
Methods/Attributes
• Object lifetime & Persistence
• Generierung von PL/SQL-Wrapper-Packages zur Ausführungauf dem Middle Tier
Oracle Forms - Java Importer
Oracle Forms in Service-orientierten Architekturen (SOA)
• Forms als Konsument von (Web) Services
• Forms-Module als Konsument von Web Services• über die Integration von server-seitigem Java
• Einbindung des Web Service Client Stub in Forms mittels des Java Importers
• Aufruf einer JVM auf dem Application Server
Forms als Konsument von Web Services
Beispiele:http://www.oracle.com/technology/sample_code/products/forms/viewlets/10g/webservices/webservices_viewlet_swf.html
http://www.oracle.com/technology/products/forms/htdocs/10gr2/howto/webservicefromforms/ws_10_1_3_from_forms.html
• Web Service auswählen=> JDeveloper: Auswahl
• Client für den Web Service erzeugen=> JDeveloper: Web Service Proxy
• Web Service Client kompilieren und testen=> JDeveloper
• Web Service Client (*.class) importieren=> Forms: Java Importer
• Methoden aus Forms aufrufen=> Forms: Trigger bzw. Program Units
• mit JDeveloper 10.1.3 wird JAX-RPC Client generiert=> Archiv mit notwendigen Bibliothekenhttp://download.oracle.com/otn/java/oc4j/101320/wsclient_extended_101320.zip
Forms als Konsument von Web Services
Web Service in Forms - Konfiguration
• Design Time (Forms Builder)• FORMS_BUILDER_CLASSPATH setzen• CLASSPATH setzen
� Registry oder spezielles Start Script für den Builder
• Runtime (OracleAS Forms Service)• CLASSPATH setzen� Environment File (default.env)
• Problemstellung• Aufruf von server-seitigen Java-Klassen in der Form führt zu
Unhandled Exceptions• ORA-105100 ORA_JAVA.JAVA_ERROR• ORA-105101 ORA_JAVA.EXCEPTION_THROWN
• Java Error Stack erforderlich, um die Fehlerursache zu erkennen
• Lösungsansatz• Import von 2 Klassen aus OH/jdk/jre/lib/rt.jar in die betreffende
Form• java.lang.Exception• java.lang.StackTraceElement
• Temporärer Einbau eines Exception Handlers in die betreffende Form (PL/SQL-Logik)
• Anzeige des Java Error Stack in einem mehrzeiligen Textfeld der Form
Forms Runtime – Java Error Stack
<Insert Picture Here>
Beispiel: Oracle BI Publisher
Aufruf eines Berichtes aus Oracle Forms
• Oracle BI Publisher• moderne Lösung zur Erzeugung von Berichten und
Dokumenten
• BI Publisher Server läuft als Applikation im Application Server
• Nutzung der Web Service-Schnittstelle des BI Publisher (ab 10.1.3.3.1)
• Import des Web Service Client in die Forms-Applikation (Java Importer)
• BI Publisher Server liefert den Bericht im gewünschtenFormat an die Forms-Applikation
http://www.oracle.com/technology/products/xml-publisher/docs/Forms_BIP_v21.pdf
Datenbank
OracleASForms Service
Client
OracleASBI PublisherWeb Service
Daten
Bericht
Aufruf eines Berichtes aus Oracle Forms
D E M O N S T R A T I O ND E M O N S T R A T I O N
Web Service Web Service ausausForms aufrufenForms aufrufen
<Insert Picture Here>
Beispiel: Oracle BPEL
Einbindung von Services in einerService orientierten Architektur (SOA)
SubmitOrder
CheckInventory
CheckCredit
SendResult to
User
Portal
SAP
Java
Web App
Mainframe
FormulateFulfillment
Offer
FormulateRejection
CanFulfill?
TransformOrder/
Customer
DetermineDiscount
• Business Process Execution Language (BPEL)• Standard für die Orchestrierung von Geschäftsprozessen und
Web Services (OASIS, Version 1.1)• BPEL beschreibt den Ablauf von Geschäftsprozessen als
strukturierte Aktivitäten (XML-Dialekt)• entwickelt von IBM, Microsoft and BEA
(Version 1.0 im August 2002) auf Basis von XLANG (Microsoft) und WSFL (IBM)
• Eingereicht zur Standardisierung bei OASIS im April 2003• Unterstützt durch alle “Key-Player” (IBM, Microsoft, Oracle,
Sun, BEA, SAP, Siebel, …)• BPEL 2.0 wurde im April 2007 verabschiedet und freigegeben• Oracle wird BPEL 2.0 schrittweise mit dem Release 11
umsetzen (die meisten Konzepte bleiben unverändert)
BPEL – Service Orchestration
• BPEL = Business Process Execution Language• Unternehmensweite Infrastruktur für Entwicklung und Betrieb der BPEL-
basierten Geschäftsprozessabläufe
• Native BPEL Implementierung
• Einfache Modellierung
• Skalierbare und zuverlässigeLaufzeitumgebung
• Flexibles Binding Framework
• Umfangreiche Verwaltung und Monitoring
• Unterstützt Oracle AS, WebLogic, WebSphere, JBoss
• Installiert und lauffähig in weniger als 15 Minuten!
BPEL ConsoleM
AN
AG
E
J2EE Application Server(Oracle AS, WebLogic, JBoss, WebSphere)
Core BPEL Engine
WSDL Binding Built-in Integration Services
File, FTP
Web services
Java, JMS
Database
JAVA XSLT Rich Workflow
BPEL
JDeveloper, Eclipse
BPEL Designer
BPEL Process Manager
Sensors
Dehydration Store(Oracle Database)
Apps
Oracle BPEL Process Manager
ToDo Liste
Assign Task
TaskComplete
Workflow Service
(1) Zuweisen einer Aufgabe (Task) an einen Benutzer/Rolle
(2) Rückgabe der Antwort an den Prozesses
Update Task
BPELProcess
WSDL Contract
Workflow als Service
Beispiel: Urlaubsantrag
• Einfacher Workflow• Urlaubsantrag
• Antrag abschicken• Ermitteln Resturlaub• Ermitteln Vorgesetzter• Weiterleiten an den Vorgesetzten
• Genehmigen / Ablehnen / Delegieren• Information für den Antragsteller
• Bestätigen
D E M O N S T R A T I O ND E M O N S T R A T I O N
FormsForms --Integration mit Integration mit BPELBPEL --ProzessProzess
BPEL Konsole
• Starten eines Prozesses
Eintragen der Daten
Starten
• Default BPEL Worklist• Java Server Page• bei der Erstellung des Prozesses generiert
Bearbeitung der Tasks in der BPELWorklist
• Worklist Details
Bearbeitung der Tasks in der BPELWorklist
BPEL Prozess starten
• Wie kann man einen BPEL Prozess aus Forms heraus starten ?
• als Web Service • BPEL-Prozess ist selbst ein Web Service• XML/SOAP/WSDL Interface
• aus Java-Applikationen• Java API• Lokal oder Remote (RMI)
• Schreiben der Java-Klassen zur Interaktion mit dem BPEL Process Manager(Java API oder Web Service API)=> JDeveloper
• Java-Klassen kompilieren, testen, deployen=> JDeveloper
• Java-Klassen (*.class) importieren=> Forms: Java Importer
• Methoden aus Forms aufrufen=> Forms: Trigger bzw. Program Units
• Datenmanipulation programmieren=> Forms: Data Block
Interaktion von Forms mit BPEL-Prozess
Bearbeitung der BPEL Tasks in Forms
Bearbeitung der BPEL Tasks in Forms
Bearbeitung der BPEL Tasks in Forms
Web Service oderJava API Aufrufe
Urlaubsantrag
Reisekostenabrechnung
Kreditvergabe
Architektur Forms - BPEL
Integration externer Systeme über BPEL
Siebel
Cobol File
“ Mainframe ”
BPEL
Oracle APPS
Oracle Forms
SAP
J2EE
Zusammenfassung
• Offene Architektur in Forms• client-seitiges Java• server-seitiges Java (Java Importer)
• Integration mit anderen Anwendungen• Forms als Konsument von Web Services• Integration in BPEL-Prozesse
• Prozesse starten• Prozessinformationen abfragen und bearbeiten
Q&A