Browsing "Older Posts"

APEX-AT-WORK no image

Customized APEX workspace login

Von Tobias Arnhold → 4.27.2012
There is a easy way to set up your APEX workspace login URL so that you reach a special page inside your application builder.
The following URL example will let you jump automatically to the SQL Commands interface:
http://apex.oracle.com/pls/apex/f?p=4550:1:120535189731429::::FSP_AFTER_LOGIN_URL,F4550_P1_COMPANY,F4550_P1_USERNAME:\f?p=4500|1003\,WS_TEST,APEX_USER

Description:
FSP_AFTER_LOGIN_URL - Defines the URL you want to jump to.
F4550_P1_COMPANY - Workspace name
F4550_P1_USERNAME - APEX developer account

Important Links:

Export Application - \f?p=4000|4900\

SQL Workshop - \f?p=4500|3002\

Object Browser - \f?p=4500|1001\
SQL Commands - \f?p=4500|1003\
Data Upload und Download - \f?p=4300|1\
Generate DDL - \f?p=4500|12\


Team Development: \f?p=4800|4000\

Administration: \f?p=4350|1\
Page Views by Calender - \f?p=4350|27\


APEX-AT-WORK no image

Using IReport without the Jasper Report Server inside APEX

Von Tobias Arnhold → 4.17.2012
There is a nice development going on to include the created IReport (from Jasper Reports) templates with a PL/SQL PDF Generator. For more information take look into this blog post: http://andreas.weiden.orcl.over-blog.de/article-jrxml-to-pdf-a-declarative-pure-pl-sql-reporting-engine-103535334-comments.html#anchorComment
APEX-AT-WORK no image

Client IP Adresse in APEX auslesen

Von Tobias Arnhold → 4.09.2012
Um die Client-IP-Adresse mit Hilfe von PL/SQL auszulesen, können Sie zwei unterschiedliche Prozeduren verwenden:
select
owa_util.get_cgi_env('REMOTE_ADDR')
from dual;

select 
sys_context('userenv','ip_address')  
from dual;
Das Ganze funktioniert super solange Sie keinen vorgeschalteten Proxy Server verwenden! Aber auch dafür gibt es einen Workaround. Stellen Sie folgende Einstellung in Ihrer http.conf ein:
RewriteCond %{REMOTE_ADDR} (.*)
RewriteRule .* - [E=REMOTEA:%1]
RequestHeader set X-Oracle-Cache-User "%{REMOTEA}e"

# Außerdem müssen folgende Einstellung mit gesetzt werden:
# 1. Konfiguration der RewriteRule muss in einem VirtualHost hinterlegt sein:
<VirtualHost 192.168.0.1:80>

# 2. Rewrite muss aktiviert werden
RewriteEngine on

# 3. ModHeader muss mit geladen werden
LoadModule headers_module modules/mod_headers.so
Die Lösung wurde von Dietmar Aust im Oracle APEX Forum auch noch tief greifender beschrieben: https://forums.oracle.com/forums/thread.jspa?messageID=1262928&#1262928 
Weitere Forum Einträge zu Thema:
https://forums.oracle.com/forums/thread.jspa?threadID=926109
http://redmine.lighttpd.net/boards/2/topics/3626
Das auslesen der Info in PL/SQL sieht dann so aus:
select
owa_util.get_cgi_env('HTTP_X_ORACLE_CACHE_USER')
from dual;
Info: Es kann vorkommen das andere Einstellungen verhindern das die Variable richtig durchgeroutet wird.
APEX-AT-WORK no image

Erster DOAG Artikel veröffentlicht

Von Tobias Arnhold → 4.03.2012
Hallo Zusammen,

in der aktuellen DOAG Ausgabe findet Ihr viele interessante Artikel zu Oracle APEX. Einer dieser Artikel handelt um APEX Plugins und stammt aus meiner Feder. Gönnt euch eine Minute Auszeit und schaut einfach mal rein.

Viel Spaß beim lesen.
APEX-AT-WORK no image

APEX Plugin Competition

Von Tobias Arnhold → 3.30.2012
A few days ago (Tuesday March 27th 2012) started the first ODTUG APEX Plugin Competition ever. This is a chance for everybody to submit their self created Plugins to get reviewed, judged and maybe win one of the many Prizes available.
Plugins will be judged upon skill level of its creator. That means beginners and experts will not be in the same category, to make it fair to everyone.
Read all the Details on Martins Blog and see the rules on the ODTUG Page.
To participate in the competition go to www.apex-plugin.com and login/register to submit your Plugin.
Judges for this Competition are: Martin, Dan, Peter, Learco, John, Dimitri, myself and of course Patrick as the inventor of Plugins.
Don’t hesitate to submit your Plugin, even if you think you won’t make the first prize. It’s also about getting a Review and maybe valuable Feedback by the judges.

Dynamic Actions als Nadelöhr

Von Tobias Arnhold → 2.28.2012
Eines Vorweg: 
Dynamic Actions sind genial und machen das dynamische agieren mit dem Endnutzer ohne Seiten-Submit wunderbar einfach. Nur leider können Dynamic Actions Ihren Browser auch leicht performance seitig ins wanken bringen. Nehmlich dann, wenn Sie sehr viele Dynamic Actions gleichzeitig verwenden.
Hier ein Beispiel meiner Plug-in App (Seite 1):
Ich verwende 7 unterschiedliche Dynamic Actions diese wiederum unterschiedliche Aktionen beinhalten:

Nun ist die Frage, wie kann ich die Performance überhaupt verbessern?
Das Zauberwort heißt: "Condition"
Sie können Dynamic Actions wie auch viele andere APEX Elemente bedingt anzeigen. Dies ist natürlich nicht immer möglich, aber man sollte es im Auge behalten, da jede geladene Dynamic Action auf Kosten der Endnutzer Performance geht.

Debugging:
Das Problem ist, Sie können sehr gut SQL und PL/SQL Code auf Performance-Probleme hin analysieren. Bei Dynamic Actions können Sie dies nur bedingt tun, da viele Client-PC's unterschiedliche Konfigurationen haben die ein späteres Debugging schwierig gestalten.
Tip: Zum Debuggen von Dynamic Actions verwende ich Firefox mit Firebug.

Wo liegen die größten Client Nadelöhre (Im Bezug auf Dynamic Actions):
- Client-Rechner (Hardware)
- Browser (Software)

Warum Browser?
Haben Sie sich jemals gefragt warum es Javascript Speed Tester gibt und warum die Browser Hersteller besonders mit tollen Javascript-Engines Werbung machen. Javascript wird wie in APEX in einem immer größerem Umfang bei der Webentwicklung genutzt. Das hat zur Folge, dass die Browser den JS-Code möglichst schnell abarbeiten müssen, um so die Usability der Webseiten flüssig zu halten. Sie sollten daher immer darauf achten die Endnutzer Browserauswahl einzuschränken. Dies ist aus CSS Gründen schon von Vorteil und wird durch die Nutzung von komplexen Javascript Code / Dynamic Actions noch verstärkt.

Zusammenfassung:
Dynamic Actions sind ein mächtiges Werkzeug das wohl überlegt verwendet werden muss. Genauso wie Sie bei der Entwicklung von SQL und PL/SQL Code auf Performance Engpässe achten müssen, ist auch bei der Entwicklung von Dynamic Actions die verwendete Anzahl abhängig von den Anforderungen im Rahmen zu halten. Ich rate im Normalfall nicht mehr als 10 Dynamic Actions pro Seite zu verwenden.

Ein paar Links zum Thema:
Dynamic Actions
AJAX-Technologie ganz einfach: Dynamic Actions  - http://www.oracle.com/webfolder/technetwork/de/community/apex/tipps/apex40-dynamicactions/index.html
Building Dynamic Actions in Oracle Application Express 4.0 - http://st-curriculum.oracle.com/obe/db/apex/r40/apexdynactions/apexdynactions_ll.htm

Javascript
ARE WE FAST YET - http://arewefastyet.com/
JavaScript engine - http://en.wikipedia.org/wiki/JavaScript_engine
Geschwindigkeit und Speicherverbrauch aktueller Browser - http://www.heise.de/ct/artikel/Surf-Triathlon-291708.html

Transfer report row values into multiple APEX items

Von Tobias Arnhold → 2.22.2012
I added a new example whichs shows the basic functionality how to import several row values into multiple APEX items by click on the row.


Example application: http://apex.oracle.com/pls/apex/f?p=66003:1



How To:

Click inside the row on column "Year", "Month" or "Ver" to import those values into the APEX items below the report.

The example uses one dynamic action with a little piece of javascript:
$s('P1_YEAR',$(this.triggeringElement).find(".tbYear").html());