Integration von Oracle Forms in Service Oriented Architecture (SOA) Jürgen Menge Oracle 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. g OracleAS 10 Forms Services Server side Firewall Client 2 Internet Client 1 Application Tier Client side Firewall Client Tier HTTP Server MOD_OC4J Database Tier OC4J Servlet Engine Forms Servlet Forms Listener Servlet Forms Runtime 1 Forms Runtime 2 zentrales Deployment Oracle Forms Runtime + compiled Files Integration von Forms in den OracleAS Oracle Application Server Single Sign-On Forms J2EE Gemeinsame Sicherheit Java Gemeinsame Geschäftslogik Enterprise Manager Gemeinsame Administration Integration mit Java, XML und Web Services • 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 Implementierung mit Forms 6i Implementierung mit WebForms Server-side Java • 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 Oracle Forms - Java Importer • Unterstützung für Arrays Exceptions Objects Methods Attributes Static Methods/ Attributes • Object lifetime & Persistence • • • • • • • Generierung von PL/SQL-WrapperPackages zur Ausführung auf dem Middle Tier Oracle Forms in Service-orientierten Architekturen (SOA) • Forms als Konsument von (Web) Services 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 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 Forms als Konsument von Web Services • 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 Bibliotheken http://download.oracle.com/otn/java/oc4j/101320/wsclient_extended_101320.zip 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) Forms Runtime – Java Error Stack • Problemstellung • Aufruf von server-seitigen Java-Klassen in der Form führt zu Unhandled Exceptions • ORA-105100 • ORA-105101 ORA_JAVA.JAVA_ERROR 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 <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ünschten Format an die Forms-Applikation http://www.oracle.com/technology/products/xml-publisher/docs/Forms_BIP_v21.pdf Aufruf eines Berichtes aus Oracle Forms OracleAS Forms Service Client Bericht Daten OracleAS BI Publisher Web Service Datenbank D E M O N S T R A T I O N Web Service aus Forms aufrufen <Insert Picture Here> Beispiel: Oracle BPEL Einbindung von Services in einer Service orientierten Architektur (SOA) SAP Submit Order Transform Order/ Customer Mainframe Formulate Fulfillment Offer Check Inventory Can Fulfill? Determine Discount Check Credit Portal Formulate Rejection Web App Java Send Result to User BPEL – Service Orchestration • 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) Oracle BPEL Process Manager • • BPEL = Business Process Execution Language Unternehmensweite Infrastruktur für Entwicklung und Betrieb der BPELbasierten Geschäftsprozessabläufe JDeveloper, Eclipse • Native BPEL Implementierung BPEL Designer • Einfache Modellierung BPEL • Skalierbare und zuverlässige Laufzeitumgebung BPEL Process Manager WSDL Binding Built-in Integration Services • Flexibles Binding Framework Web services Java, JMS JAVA XSLT Dehydration Store (Oracle Database) Rich Sensors Workflow File, FTP Database Core BPEL Engine BPEL Console J2EE Application Server (Oracle AS, WebLogic, JBoss, WebSphere) MANAGE Apps • Umfangreiche Verwaltung und Monitoring • Unterstützt Oracle AS, WebLogic, WebSphere, JBoss • Installiert und lauffähig in weniger als 15 Minuten! Workflow als Service WSDL Contract Workflow Service Assign Task Update Task Task Complete BPEL Process (1) Zuweisen einer Aufgabe (Task) an einen Benutzer/Rolle (2) Rückgabe der Antwort an den Prozesses ToDo Liste 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 N Forms-Integration mit BPEL-Prozess BPEL Konsole • Starten eines Prozesses Eintragen der Daten Starten Bearbeitung der Tasks in der BPEL Worklist • Default BPEL Worklist • Java Server Page • bei der Erstellung des Prozesses generiert Bearbeitung der Tasks in der BPEL Worklist • Worklist Details 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) Interaktion von Forms mit BPEL-Prozess • 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 Bearbeitung der BPEL Tasks in Forms Bearbeitung der BPEL Tasks in Forms Bearbeitung der BPEL Tasks in Forms Architektur Forms - BPEL Web Service oder Java API Aufrufe Urlaubsantrag Reisekostenabrechnung Kreditvergabe Integration externer Systeme über BPEL SAP Siebel Oracle Forms BPEL Oracle APPS J2EE Cobol File “Mainframe” 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