Inside Oracle APEX auf Deutsch (von Patrick Wolf)

Kein Posting seit über einer Woche...

Vielleicht habt Ihr Euch schon gewundert, warum ich seit einer Woche nichts mehr geschrieben habe, aber ich war unterwegs.

Sphinx IT Consulting, die Firma wo ich arbeite hat letzte Woche an der Oracle Roadshow "Innovations & Experiences" teilgenommen, welche durch Linz, Graz und Wien getourt ist. Das Motto meiner Firma war den Firmen eine Alternative zu Java/.Net zu zeigen, wenn sie den Web 2.0 Weg einschlagen will.

Besonders wenn man einen Oracle-Forms, PL/SQL und SQL Hintergrund hat und viel Business Logik als PL/SQL Packages in der Datenbank hat, kann es sinnvoll sein eine Alternative zu Java in betracht zu ziehen um seinen bestehenden Code und Skills Web-Ready zu bekommen.

Darum haben wir auf der Roadshow zwei Tools gezeigt:
  • WebMagic4DB, ein Tool welches wir für einen unseren Kunden entwickelt haben, damit er die bestehende PL/SQL Infrastruktur und das Wissen seiner Entwickler besser weiterverwenden kann. Es besteht aus einem flexiblem Echo 2 basierendem Laufzeit Framework welcher durch ein Repository und Messages aus PL/SQL Packages gesteuert wird. Das erlaubt eine sehr flexible und schnelle Entwicklung in der weiterhin die Geschäftslogik in PL/SQL geschrieben werden kann und man aber auch manche Vorteile von Java ausnutzen kann.
  • Oracle APEX als sehr gute Alternative für Web-Entwicklung statt JDeveloper/ADF.
Ich wurde von unserem Vertrieb "ausgesucht" um den Technischen Part zu übernehmen, damit die Leute nicht nur Marketing "Bla Bla" (man kann auch heisse Luft dazu sagen) hören. ;-)

War eigentlich sehr interessant und es hat mir die Möglichkeit gegeben mit Leuten zu sprechen und sie davon zu überzeugen, dass es auch andere Wege gibt eine Applikation Web-Ready zu machen, als nur mit Java.

Außerdem habe ich so auch Infos von Kunden bekommen, welche APEX bereits einsetzen. Zum Beispiel überlegt das Österreichische Bundesheer zur Zeit APEX dazu zu verwenden Ihre 22.000 MS Access/Excel Applikationen abzulösen, welche über das ganze Land verstreut sind. Ihr Problem ist, dass in der Vergangenheit viele kleine Applikationen in den diversen Dienststellen und Kasernen von Grundwehrdienern entwickelt wurden um die Administrative Arbeit zu erleichtern. Aber diese Applikationen/Daten jetzt sehr schwer zu sichern, schützen, doppelte Eingaben verlangen, und so weiter. Und sie daher überlegen das ganze mit APEX zu zentralisieren. Hört sich interessant an, besonders auch wegen den Dimensionen.

Labels: , ,


« ... Ganzen Artikel lesen ... »

Automatisch aktualisierte Flash Charts in APEX 3.0

Habt Ihr bereits die neuen Flash Charts von Oracle APEX 3.0 verwendet?

Wie auch bereits für SVG Charts ist es möglich eine automatische Aktualisierung alle x Sekunden durchzuführen. Aber es sieht so aus als wäre ein nettes kleines Feature der SVG Charts vergessen worden, nämlich den letzten Zeitpunkt der Aktualisierung anzuzeigen.

Aber wie können wir das Hinzufügen?

Auf den ersten Blick schaut es nicht so einfach aus, den es wird kein komplettes Seiten Refresh gemacht, sondern das Flash Chart wird mittels AJAX aktualisiert.

Aber auf den zweiten Blick ist es nicht so kompliziert, wenn man die dynamischen Features von JavaScript kennt. Oracle APEX erstellt einen Timer, welcher die APEX JavaScript Library Funktion apex_RefreshChart alle x Sekunden aufruft.
<script type="text/javascript" language="javascript">
function chart_r1258481816185669517_InitRefresh(pNow) {
setTimeout("chart_r1258481816185669517_InitRefresh(true)",5000);
if (pNow){apex_RefreshChart (1, '1258481816185669517', 'en-us');}
}

apex_SWFFormFix('c1258481816185669517');
addLoadEvent(chart_r1258481816185669517_InitRefresh(false))
</script>
Aber wie können wir den apex_RefreshChart Aufruf abfangen um einen "Letzte Aktualisierung" Zeitstempel auf der Seite zu aktualisieren?

Es ist sehr Einfach wenn man weiß wie! :-)

In JavaScript können Funktionen wie Variablen erstellt und referenziert werden. Zum Beispiel kann man mit
var vOldFunction = apex_RefreshChart;
eine Referenz auf die Funktion apex_RefreshChart bekommen, welche man dann auch mit vOldFunction aufrufen kann. Nett, oder? Aber wie hilft uns das jetzt bei obigem Problem?

Es erlaubt uns die existierende Funktion apex_RefreshChart durch eine neue Version zu ersetzen welche die zusätzliche Funktionalität abdeckt, aber danach die Original Funktion aufruft um die APEX Funktionalität zum aktualisieren eines Charts auszuführen.
  1. Öffne die "Region Definition" des Flash charts.
  2. Danach im "Region Source" den folgenden JavaScript Code for dem existierendem <object classid=... hinzufügen
    <script type="text/javascript">
    var vOriginal_apex_RefreshChart = apex_RefreshChart;

    apex_RefreshChart = function(page_id,region_id,browser_lang)
    {
    document.getElementById("last_refresh").innerHTML = Date();
    vOriginal_apex_RefreshChart(page_id, region_id, browser_lang);
    };
    </script>
  3. Danach im "Region Footer" den folgenden HTML Code hinzufügen, welcher als Platzhalter für den "Letzte Aktualisierung"'s Zeitstempel gilt.
    <br>
    <center>
    Chart will refresh every 5 sec.<br>
    Last refresh: <span id="last_refresh"></span>
    </center>
Was macht der ganze Code jetzt?

Er überschreibt die existierende APEX Library Funktion apex_RefreshChart mit einer neuen Version welche auch den aktuellen Zeitpunkt in dem SPAN Element mit der id "last_refresh" setzt. Übrigens, wenn Ihr die Default Konvertierung der Date() Funktion nicht mögt, schaut Euch die diversen JavaScript Quellen im Internet an um weite Formatierungsoptionen zu bekommen.

Der obige Code ist ein gutes Beispiel um zu demonstrieren wie man die bestehenden JavaScript Funktionen von APEX erweitern/ersetzen kann um eigene Funktionalität hinzuzufügen.

Wollt Ihr ein Beispiel von dem ganzen sehen? Dann schaut mal auf meine Beispiel Seite.

Labels: , , ,


« ... Ganzen Artikel lesen ... »

Nicht auf der Collab'07 in Las Vegas gewesen?

Dann solltet Ihr Euch vielleicht mal die Artikel von Dimitri's, John's und Mark's ansehen, die darin ihre Eindrücke von dieser Konferenz schildern.Danke Jungs für die ausführliche Beschreibung, war interessant zu lesen!

Labels: , , ,


« ... Ganzen Artikel lesen ... »

Funktioniert ApexLib auch unter HTMLDB 1.6?

Laut Richard, einem schottischem ApexLib Benutzer - JA!

Er hat erfolgreich den ApexLib Framework in eine HTMLDB 1.6 Applikation integriert. Damit die Installation reibungslos über die Bühne geht, muss man den APEX 2.0 Installationsanweisungen folgen.

Ich habe zur Zeit keine Pläne HTMLDB 1.6 "offiziell" zu unterstützen, da bereits 4 verschiedene APEX Versionen eine Menge Arbeit bedeuten, aber es ist trotzdem schön zu hören, dass der Framework auch mit so einer alten Version funktioniert.

Labels: , ,


« ... Ganzen Artikel lesen ... »

ApexLib auf apex.oracle.com installieren

Wie Ihr anhand der ApexLib Demo Applikation sehen könnt, läuft der Framework auch auf apex.oracle.com. Aber um ehrlich zu sein, ist es eine Menge Arbeit um all die einzelnen Packages und Views auf apex.oracle.com hochzuladen um sie dann dort im eigenen Schema installieren zu können.

Ich habe eine Anfrage bekommen, ein How To Dokument zu erstellen welches die notwendigen Schritte beschreibt um ApexLib auf apex.oracle.com zu installieren.

Ich habe mir gedacht, dass wäre doch eine gute Gelegenheit sich mal das "Supporting Objects" Feature von APEX anzusehen. Mit diesem Feature ist es möglich zusätzlich zur Applikation auch noch weitere Datenbank Objekte wie Tabellen, Views, Packages oder auch das Laden von Daten durchzuführen. Scheint das Ideale Feature zu sein um die Views und Packages des ApexLib Framework zu installieren.

Die Schritte um die Installations Scripts zu erstellen sind eigentlich sehr einfach und klar. Es gibt aber einen kleinen Hacken dabei. Wenn man sehr viele Dateien hat, so wie ich (29 einzelne Dateien), dann ist das erstellen dieser Installations Scripts/Steps sehr langweilig. Hinweis an das APEX Entwicklungsteam: Wie wäre es mit einem Multi-Datei Upload? :-)

Aber schlussendlich habe ich es geschafft!

Ich habe eine neue Applikation erstellt, welche keine einzige Seite enthält, nur die "Supporting Objects". Ich habe es nicht zur Demo Applikation hinzugefügt, weil die reguläre ApexLib Installation immer mit den bereitgestellten Installationsscripts durchgeführt werden soll. Die neue Applikation ist nur als Erleichterung für apex.oracle.com gedacht. Ok, es funktioniert auch mit jeder normalen APEX Installation, im Falle wenn kein SQL*Plus Zugriff vorhanden ist. Aber niemand weitererzählen! ;-)

Willst Du den Framework auf apex.oracle.com ausprobieren? Alle notwendigen Files befinden sich auf Sourceforge.

Übrigens, für die Installation der Applikation auf apex.oracle.com muss man ein wenig geduldig sein, es dauert meistens ein "wenig" länger...

Labels: , ,


« ... Ganzen Artikel lesen ... »

DOAG veranstaltet ein SIG Meeting zum Thema "APEX für Fortgeschrittene"

Die Deutsche Oracle Usergroup (DOAG) veranstaltet am 31. May in Kassel ein SIG Meeting zum Thema "APEX für Fortgeschrittene". Die Agenda verrät Euch weitere Details.

Fast hätte ich es vergessen...
*Trommelwirbel*
Ich werde dort meine erste APEX Präsentation halten! :-)
*Trommelwirbel*

Der Titel der Präsentation ist "The power of the APEX Repository".

Es gibt auch noch viele andere interessante Präsentationen, vielleicht sehen wir uns ja dort!

Labels: , ,


« ... Ganzen Artikel lesen ... »

Nützliche Oracle APEX Tools

Habt Ihr gewusst, dass mit der Oracle APEX Distribution ein paar nützliche kleine Tools ausgeliefert werden?

Das "Command Line Export" Tool kennt Ihr vielleicht schon. John Scott hat vor einiger Zeit einen Artikel dazu erfasst.

Aber habt Ihr gewusst, dass es noch zwei weitere Scripts gibt, welche manchmal sehr nützlich sein können?
  • apxxepwd.sql im Hauptverzeichnis. Dieses Script kann dazu verwendet werden um das Passwort des ADMIN Benutzers von APEX zu setzen, zum Beispiel wenn man es vergessen hat. Jornica, danke für diesen Tipp!
  • \utilities\reset_image_prefix.sql kann verwendet werden den "Image Prefix" Pfad (das /i/) einer existierenden APEX Installation zu ändern.

Labels: , ,


« ... Ganzen Artikel lesen ... »

Mögliches Problem in ApexLib 1.6 mit Popup Lovs

Wenn Ihr ApexLib 1.6 mit dem Internet Explorer verwendet, dann kann es eventuell zu einem Problem mit Popup Lovs kommen, wenn Ihr einen Wert auswählt. Der Wert wird in der aufrufenden Seite gesetzt, aber das Popup wird nicht geschlossen. Stattdessen wird ein JavaScript Fehler angezeigt.

Hinweis: Dieser Fehler tritt nur auf, wenn Ihr die Datei ApexLib_Lov.js in das "Popup Lov Template" eingefügt habt. Wie es in Kapitel 3.12 des How To Integrate Dokuments beschrieben ist.

Benutzt die folgende neue Version von ApexLib_Lov.js um das Problem zu korrigieren.

Labels:


« ... Ganzen Artikel lesen ... »

Verwendet Ihr bereits die Caching Funktion von Oracle APEX 3.0?

Falls Ihr die Postings im Oracle APEX OTN Forum nicht die ganze Zeit verfolgt. Vor kurzem hat es einen interessanten Thread zur neuen "Seiten/Region Caching" Funktion von Oracle APEX 3.0 gegeben.

Der Thread liefert einige interessante Details und Wissenswertes direkt von den APEX Entwicklern. Die Informationen helfen einem wirklich, einen leichten Einstieg in die Thematik zu bekommen.

Mehr Details gibt es im Thread V3 Caching - any more info?

Labels: , ,


« ... Ganzen Artikel lesen ... »

Neuer APEX Blog von einem der Oracle Entwickler

Marc Sewtz, einer der Entwickler von Oracle APEX hat seinen eigenen Blog gestartet. Schaut ihn Euch mal unter http://marcsewtz.blogspot.com/ an!

Marc, ein herzliches Willkommen in der APEX Blogging Community und ich wünsche Dir ausreichend Zeit um viele interessante Artikel zu schreiben!

Labels:


« ... Ganzen Artikel lesen ... »

ApexLib 1.6 verfügbar

Vielleicht habt Ihr es schon gesehen, dass ich die Version 1.6 des ApexLib Framework veröffentlicht habe.

Mein ursprünglicher Plan für diese Version war den "Abhängige/Hierarchische Lov" Bereich Feature Complete zu machen, aber ich war am Wochenende ein wenig faul und habe mich von diversen Dingen ablenken lassen, statt zu programmieren. Zum Beispiel schau ich mir gerade ein Content Management System für die ApexLib Homepage an.

Aber die gute Nachricht ist, dass diese Version zumindest einige Erweiterungen im "Abhängige/Hierarchische Lov" Bereich hat. Zum Beispiel ist es jetzt möglich eine Popup Lov oder eine Multi-Select Liste als treibendes Element für die Abhängigen Lovs zu haben. Checkboxen, Radiogruppen, Shuttle, ... werden in der nächsten Version folgen.

Andere Erweiterungen sind
  • Tabular Form Validierung unterstützt jetzt Abfragen die auf einer Funktion basieren.
  • Die Date Picker Validierung unterstützt jetzt das neue "use item format mask" Feature von APEX 3.0
  • Die Warnung "Is Required" welche kommt, wenn man ein Feld verlässt kann jetzt deaktiviert werden.
Für eine vollständige Liste der Änderungen siehe die Änderungshistorie.

Ich habe auch die Demonstrations-Applikation aktualisiert um die Abhängigen Lovs mit Popup Lovs und Multi-Select Listen zu demonstrieren.

Holt Euch jetzt die neue Version!

Die Update Instruktionen findet Ihr im Change Log File.

Änderungshistorie:
  • CR# 1683676: Tabular form validations based on dynamic SQL
  • CR# 1685427: Support "multi select list" as master for a cascading lov
  • CR# 1690927: Don't show required warning when leaving empty field
  • CR# 1691701: Popup Lov should also work as master for cascading lov
  • CR# 1692584: Support for APEX 3.0 "Date Picker using item format mask"
  • Bug# 1690057: Don't do any checks if a Tab is clicked
  • Bug# 1684235: addApexValidationErrors doesn't work for Page Level Val.
  • Bug# 1686233: Edit Links not displayed in APEX 3.0


Labels: , , ,


« ... Ganzen Artikel lesen ... »

JDeveloper Vs Oracle APEX

In dem Fall, wenn Ihr die Diskussion über "JDeveloper Vs Oracle APEX" in einiger der APEX Blogs noch nicht verfolgt habt...

Wie hat das ganze begonnen?

Der Chris Muir hat vor ein paar Tagen einen Artikel über "A career path for Oracle developers - consider JDeveloper!" auf seinem Blog veröffentlicht. Er enthält einige konträre Aussagen, welches ein hohes Potential für eine lebhafte Diskussion haben :-) Zum Beispiel das "richtige" Entwickler welches das große Geld verdienen wollen und die "neuen" Konzepte welche mit Java einhergehen sich den JDeveloper ansehen sollten und nicht zum Beispiel Oracle APEX, weil das nicht gut für die Kariere ist.

Seine Aussagen haben einiges Echo in der APEX Blogging Szene verursacht. Zuerst hat der John Scott in einem Artikel darauf geantwortet mit dem Titel "JDeveloper versus APEX?" und ein wenig später auch Dimitri Gielis mit dem Artikel "We shall not use APEX!?". Und wie Ihr anhand der Kommentare in allen drei Artikel und im Forum Posting des OTN JDeveloper Forums nachlesen könnt, hat eine kleine Diskussion gestartet. :-)

Ich habe bis jetzt noch kein Kommentar in einem der Blogs geschrieben. Ich wollte mir zuerst den Kampf zwischen den Für- und Wieder-Argumente ansehen. Ach ja, ich erinnere mich noch an die "gute alte Zeit" als es so einen kleinen Glaubenskrieg zwischen "IBM OS/2 vs MS Windows" gegeben hat. Übrigens ich war damals Teil des TeamOS/2 :-)

Nur ein kurzer Kommentar von meiner Seite, ich werde noch einen richtigen Kommentar im Chris seinem Artikel hinterlassen.

[...] JDeveloper's ADF will provide a higher educational stepping stone away from the old Forms market than Apex will, as it will teach you new languages, expose you to concepts of design patterns and software architecture [...]


Ich habe mir dieses Mal erspart den ganzen Artikel zurück ins Deutsch zu übersetzen, meinen Kommentar könnt Ihr in meinem Englischem Posting lesen.


« ... Ganzen Artikel lesen ... »

Die APEX Entwicklungsumgebung in Deutsch ausführen...

Die Oracle APEX Entwicklungsumgebung oder jede andere Entwicklungsumgebung in Deutsch ausführen, kann manchmal ein wenig, sagen wir mal "irritierend" sein. Zumindest für meinen Geschmack :-)

Zum Beispiel, wenn man gewöhnt ist Datenbank Fehler normalerweise in Englisch zu bekommen und dann auf einem System arbeit wo sie auf einmal in Deutsch angezeigt werden, dann kann es manchmal schon etwas länger dauern, bis man den tieferen Sinn der Deutschen Übersetzung versteht, da hilft es einem auch nichts, dass das Geschriebene jetzt in der Muttersprache zu lesen ist...

Darum versuche ich normalerweise meine Entwicklungsumgebungen auf Englisch einzustellen. Außerdem ist es dann viel einfacher wenn man die Englischen Tutorials, Dokumente, Blog Postings, ... liest und dann sonst immer überlegen muss, wie den das jetzt auf der Deutschen Oberfläche heißen könnte. Mir zieht es immer wieder alles zusammen, wenn ich zB bei einem Entwickler ein Deutsches Oracle Forms sehe... :-)

Aber wie kann jetzt die APEX Entwicklungs IDE auf Englisch umgestellt werden?

Eigentlich ganz einfach. APEX verwendet die Browser Spracheinstellung um die Sprache für die Entwicklungsumgebung zu ermitteln. Es ist daher nur ein "English [en]" als erste Sprache notwendig.

Firefox: Tools/Options.../Advanced/Languages
IE: Extras/Internet Options.../Languages


Labels: , ,


« ... Ganzen Artikel lesen ... »