ADF Business Components: Ein Praxisbericht Farben und Linien ADF Business Components: Ein Praxisbericht Markus Oppermann, IPK Gatersleben Torsten Winterberg, OPITZ CONSULTING GmbH
Kurzvorstellung Oracle ADF Farben und Linien Agenda Kurzvorstellung Oracle ADF ADF Business Components als Persistence-Layer ADF BC Konzepte Einordnung ADF BC, Toplink, Hibernate, ... Demo Praxisbericht GBIS/M der IPK Gattersleben Vorstellung IPK Vorstellung GBIS Projekt Erfahrungen mit Oracle ADF BC im Praxiseinsatz
View Controller Model Business Services ADF Architekur 10.1.3 Farben und Linien ADF Architekur 10.1.3 Rich Client Web / Wireless View ADF UIX ADF Controller ADF Bindings ADF Data Control ADF Business Components Service Object ADF Business Components Query Object ADF Business Components Entity Object Swing / JClient ADF Metadata Services Swing / JClient JSP ADF UIX JSF Controller Struts ADF Controller ADF Bindings Model ADF Data Control Business Services Java Classes EJB Session Beans ADF Business Components Service Object Web Services ADF Metadata Services ADF Business Components Query Object JDBC TopLink Queries EJB Finders Data Access ADF Business Components Entity Object Persistent Business Objects Java Classes EJB Entity Beans TopLink Mapping
Der Persistence Layer in der Unternehmensarchitektur Business Services Sehr kurz die Positionierung des Vortrages im Tagesprogramm erwähnen
Mapping-Metadata (XML) Projektstrategie Java Bean* Middle-out Bottom-Up Top-Down Meet in the middle 1 2 1 2 3 4 3 Mapping-Metadata (XML) 4 Tabellen / Schema Hibernate: erst Mapping, dann hbm2java und hbm2ddl Toplink: 1 geht auch: in Workbench Java-Klassen definieren, Tabellen definieren und dann generieren OracleTopLink 1 2 3 4 Hibernate / Hibernate-Tools/Middlegen 1 2 3 4 Oracle ADF BC 2 3
1) Tabellen im Datenbank-Schema Farben und Linien DEPT 1) Tabellen im Datenbank-Schema EMP
DEPT Department EMP 2) Entity Objects kapseln Geschäftsregeln, Logik und Defaultverhalten pro Tabelle Employee
3) View Objects kapseln SQL-Statements DEPT Department EMP ForeignDepts Employee 3) View Objects kapseln SQL-Statements RetiringEmps
4) Application Modules definieren das Datenmodell für einen Usecase DEPT Department EMP 4) Application Modules definieren das Datenmodell für einen Usecase ForeignDepts Employee ForeignPensionsApp RetiringEmps Master Detail
5) UIs verwenden das Application Module als Backend Business Service DEPT Department 5) UIs verwenden das Application Module als Backend Business Service EMP ForeignDepts Employee ForeignPensionsApp RetiringEmps Master Detail
6) Komponenten sind wiederverwendbar DEPT Department EMP 6) Komponenten sind wiederverwendbar ForeignDepts Employee ForeignPensionsApp OverbudgetDepts RetiringEmps Master SpendingReviewApp Managers Detail Master Detail
Caching Mechanismen
BC4J Verteilungsszenarien ohne(!) EJBs Präsentations- schicht Applikations- schicht Datenbank OHS OC4J Web Container EJB Container Oracle10g Java VM JDBC Java Application HTTP Browser HTML Web-Server Dynamisch generiertes HTML Servlets JSPs JavaBeans Web Listener JDBC BC4J JavaBeans Daten Client BC4J
BC4J Verteilungsszenarien mit EJBs Präsentations- schicht Applikations- schicht Datenbank OHS OC4J Web Container EJB Container Oracle10g App-Server Geschäfts-logik BC4J (EJBs) Client Java VM Java Application JavaBeans ORMI HTTP Browser HTML ORMI Web-Server Dynamisch generiertes HTML Servlets JSPs JavaBeans Web Listener Daten JDBC
Synchronize pending data changes across multiple views of data Features Declaratively design master/detail UI data model, including only data needed by client for optimum performance Synchronize pending data changes across multiple views of data Implement end-user query-by-example data filtering without code Declaratively enforce required fields, primary key uniqueness, data precision/scale, and foreign key references Simplify application security with automatic JAAS integration and audit maintenance Consistently apply prompts, tooltips, format masks, and error messages in any application
Enforce best-practice interface-based programming style Features "Write once, deploy any": use the same business service as lightweight class, EJB session bean, or web service Enforce best-practice interface-based programming style Reduce network traffic for remote clients through efficient batch operations Easily capture and enforce both simple and complex business rules, programmatically or declaratively Handle images, video, sound, and documents with no code Simplify multi-step web-based business transactions with automatic web-tier state management
Ausblick NOTE: While currently the ADF business components use their own high-performance layer to manage saving business objects changes to the database, in the future we plan to evolve the framework to take advantage of the O/R mapping services provided by Oracle TopLink. This will provide ADF Business Components developers with addtional mapping flexibility in future releases.
CreateCustomer mit Hibernate public void testCreateCustomer() throws Exception { Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); try { Customer c = new Customer(); c.setFirstname("Felix Raoul"); c.setLastname("Hammerstein"); c.setCommentary("Junger Kunde"); session.save(c); tx.commit(); } catch (HibernateException e) { ... }
CreateCustomer mit BC4J public void testCreateCustomer() throws Exception { ApplicationModule am = AmManager.getRootAm(); try { ViewObject vo = am.findViewObject(„CustomerVo“); CustomerRow c = (CustomerRow) vo.createRow(); c.setFirstname("Felix Raoul"); c.setLastname("Hammerstein"); c.setCommentary("Junger Kunde"); vo.insertRow(c); am.commit() } catch (JboException e) { ... }
Demo -Demo: Erstellen von Simple Beispiel --EOs+VOs+AM --Tester zeigen Farben und Linien Demo -Demo: Erstellen von Simple Beispiel --EOs+VOs+AM --Tester zeigen --Code zeigen, impl. --Validierung zeigen --Batchclient
Fazit ADF Business Components (BC4J) Nachteile: Sehr „invasiver“ Ansatz (keine reinen POJOs im Objektmodell) Starke Kopplung an JDeveloper Viele Dinge passieren verdeckt im Framework Vorteile Sehr gut für CRUD-Applikationen geeignet („database babysitting apps“; Bruce Tate) Sub-Framework von ADF JSR 227 zur Standardisierung eingereicht (Status: in Progress) siehe www.jcp.org, Go To JSR: 227 Daher zusätzliche Features „nach oben“ Richtung Binding Optimale JDeveloper Integration 4GL-artige Entwicklung, sehr hohe Produktivität geringe Lernkurve für Standardanwendungsfälle
Institut für Pflanzengenetik und Kulturpflanzenforschung IPK Wurzeln im 1943 gegründeten Instituts für Kulturpflanzenforschung der Kaiser- Wilhelm- Gesellschaft, jetzt ein Leibniz-Institut Forschungsschwerpunkte: Diversitätsforschung, Dynamik pflanzlicher Genome, Integrative Biologie pflanzlicher Leistungen beherbergt eine der weltweit größten Genbanken (derzeit ~148.000 Kulturpflanzenmuster)
Die Genbank und die AG Genbankdokumentation IPK Farben und Linien Die Genbank und die AG Genbankdokumentation IPK Genbank Aufgaben: Sammlung, Erhaltung, Vermehrung, Dokumentation und Bereitstellung von pflanzengenetischen Ressourcen Wissenschaftliche Bearbeitung des Materials: molekulare Charakterisierung, Genomanalyse, taxonomische Fragestellungen AG Genbankdokumentation: Neuentwicklung des Genbank-Informationssystems (GBIS) Betreuung und Entwicklung der wissenschaftlichen Datenbanken der Genbank Informationsdarstellung in der Biodiversitätsforschung
Ablösung der karteikartenbasierten Dokumentation Farben und Linien Das GBIS-Projekt Zielsetzung Teilaspekt des 4-jähriges BMBF gefördertes Projekt zur Etablierung einer gesamtdeutschen Genbank (Feb 2002 – Jan 2006) Integration der an vier Standorten vorhandenen Datenbestände in eine (zentrale) Datenbank Ablösung der karteikartenbasierten Dokumentation Vollständiger Ersatz der bisherigen DV-Lösungen mit „Mehrwert“ Grundlage / Umfang Plattform: Oracle/Linux umfasst Datenbankdesign, Applikationsentwicklung und -implementierung
Umfang und Art des Datenbestandes Farben und Linien Umfang und Art des Datenbestandes ~ 149.000 Akzessionen aus ca. 100 Pflanzenfamilien mit mehr als 700 Gattungen und über 2.500 Arten drei bis vier Partien (Jahrgänge) pro Akzession 700 bis 1.200 Materialabgaben pro Jahr mit insgesamt 12.000 bis 15.000 Mustern im Versand 8.000 bis 10.000 Anbauten pro Jahr diverse Daten zu Beobachtungen, Taxonomie, Institutionen
GBIS / Management – Genbank interne Managementsoftware GBIS / Bonitur – Software zur Erfassung von Beobachtungsdaten mit mobilen Endgeräten GBIS / Internet – externer Informations- und Bestellzugang internes GBIS externes GBIS GBIS/M GBIS/I GBIS/B
Erfahrungen Warum ADF (2003)?
GBIS in Kontext der ADF Architekur Farben und Linien GBIS in Kontext der ADF Architekur GBIS/M (Rich Client) GBIS/I (Web) View Swing / JClient JSF Controller ADF Controller ADF Bindings Model ADF Data Control Business Services ADF Business Components Service Object ADF Metadata Services ADF Business Components Query Object Data Access ADF Business Components Entity Object Persistent Business Objects
Projektstrategie bei GBIS JClient über ADF Bindings Top-Down Bottom-Up Meet in the middle 1 2 1 2 3 3 ADF View Objects ADF BC Entity Objects Hibernate: erst Mapping, dann hbm2java und hbm2ddl Toplink: 1 geht auch: in Workbench Java-Klassen definieren, Tabellen definieren und dann generieren Tabellen / Schema
Erfahrungen: Erster Modellierungsansatz GBIS Farben und Linien Erfahrungen: Erster Modellierungsansatz GBIS ATTRIBUTE hochnormalisiertes DB-Schema Metamodell zur Abbildung der Strukturen Viewschicht realisiert Abbildung auf BC-Entities Bottom-Up-Strategie OBJECT Dept_View TYPE Department Hohe Kosten bei Modelländerungen Emp_View Employee
Erfahrungen: korrigierter Modellierungsansatz Re-Design des DB-Schema 1:1 Abbildung der BC-Entities auf DB-Tabellen Top-Down-Entwurf + Bottom-Up-Umsetzung DEPT Department EMP ForeignDepts Employee RetiringEmps
Fazit Vorteile BC4J bietet ausgereiftes, performantes Pesistenzframework ADF als nutzbare Technologie insbesondere bei „Standart-Applikationen“ Integration in JDeveloper gute Wizard-Unterstützung bei der Generierung von Objekten "Write once, deploy any": BC-Entities sowohl für GBIS/M als auch für GBIS/I nutzbar Nachteile Einarbeitungsaufwand für Lösungen „abseits der Wizards“ sehr hoch Pflege und Anpassung der Objekte nicht 4GL-artig unterstützt Versionsmanagement nicht konsistent über gesamtes Projekt nutzbar Agile Softwareentwicklung über alle Schichten schwierig
Vielen Dank für Ihre Aufmerksamkeit ! Farben und Linien Kontakt: Markus Oppermann IPK Gatersleben markus.oppermann@ipk-gatersleben.de +49 39482 5 0 Torsten Winterberg OPITZ CONSULTING GmbH torsten.winterberg@opitz-consulting.de +49 2261 6001 0 Vielen Dank für Ihre Aufmerksamkeit !
Informationsquellen zu ADF Einige Informationsquellen zu Oracle ADF Oracle 10g JDeveloper Product Center http://otn.oracle.com/products/jdev/index.html Oracle ADF Data Binding Primer http://otn.oracle.com/products/jdev/collateral/papers/10g/ ADFBindingPrimer/index.html Dive into BC4J and ADF http://radio.weblogs.com/0118231/ JSR 227: A Standard Data Binding & Data Access Facility for J2EE http://www.jcp.org/en/jsr/detail?id=227