Integracja aplikacji Oracle APEX z istniejącą stroną

Często spotykam się z problemem integracji Oracle APEX lub części funkcjonalności (np. wykresów) z istniejącymi stronami WWW stworzonymi w bardzo różnych technologiach (PHP, ASP, CGI). Wstawienie na stronę WWW (np. forum, bloga, cms itp.) np. wykresu czy regionu stworzonego w APEX’e jest możliwe i bardzo efektywne. Przykładowe rezultaty jakie można uzyskać widzicie poniżej. Blog korzysta z silnika WordPress napisanego w PHP, ale poniższy wykres powstał z zapytania SQL do bazy danych w Oracle APEX

Podobnie jak poniższy raport interaktywny

Implementacja wymaga poświęcenia nieco uwagi, ale możliwości są ogromne, a efekty długo cieszą – więc warto.

Całość zrealizowana jest poprzez pływającą ramkę (iframe), wyświetlającą stronę APEX z regionem, który chcemy osadzić na stronie zewnętrznej. Strona APEX jest tak przerobiona, aby nie wymagała logowania, nie miała marginesów, a wymiar ramki powinien być zgodny z wymiarem regionu. Dodatkowo usuwamy obramowanie ramki, aby region nie był wizualnie oddzielony od reszty treści.

Aby ten efekt zrealizować tworzymy stronę APEX zawierającą interesujący nas region (wykres lub raport), oraz ustawiamy jego wymiar na np. 400px x 300px. Następnie w ustawieniach regionu wyłączamy jego szablon

Zostały jeszcze trzy kroki w przygotowaniu strony. Pierwszy to pozbycie się wszelkich elementów strony poza regionem. Najłatwiej uzyskać to poprzez zmianę szablonu strony na “Popup:

Drugim krokiem jest pozbycie się marginesów strony. Można to zrobić przez dodanie poniższego kodu do nagłówków strony:

<style>
body {
   margin: 0px !important;
   padding: 0px !important;
}
</style>

Zostało jedynie wstawienie IFRAME na stronę:

 <iframe style="overflow: hidden; width: 500px; height: 400px;" src="http://apex.oracle.com/pls/apex/f?p=15241:2:0:::::" frameborder="0" scrolling="no" width="500" height="400"></iframe>

i… różnie bywa. Wszystko zależy od wykorzystywanej wersji APEX’a. Jeżeli jest to APEX 4.0, wszystko powinno działać poprawnie. APEX 4.1 domyślnie zabezpiecza aplikacje przed możliwością ich osadzenia w ramce. Aby wyłączyć to zabezpieczenie musimy wklikać się w ustawienia aplikacji (Edit Application settings -> Security) i ustawić pole “Embed in Frames” na “Allow” Niestety wersja 4.1 posiada bug i nieprawidłowo współpracuje z IE – jest tu problem z ciasteczkami w ramkach IFRAME, który powoduje, że APEX i strona w której osadzamy region muszą być w tych samych domenach. Istnieje możliwość przeskoczenia tego problemu, np. poprzez ingerencję w konfiguracje serwera WWW, ale bug ten nie wpływa na strony w tych samych domenach i prawdopodobnie zostanie wkrótce poprawiony.

Po tych wszystkich krokach wreszcie możemy cieszyć się efektem, który aż zapiera dech w piersiach :).

About Przemysław Kantyka

LinkedIn Profile I am a Consultant with 15 years of professional experience in Forms, Oracle, PL/SQL and APEX. I am a participant in the Oracle ACE program. As a Snowflake Data Engineer, I also work with data warehouse systems and perform analysis, ETL and tuning activities. I am also a co-organizer of Snowflake Meetup Group Poland and a speaker at international conferences (DOAG, Oracle Open World, APEX World). I am co-founder and developer of Oracle-Snowflake Connector. Visit dataconsulting.pl website
This entry was posted in Oracle APEX Advanced and tagged , , , , , , , , . Bookmark the permalink.

Leave a Reply