APEX Limitation: Sharing pages across multiple APEX applications
attisMar 20 2012 — edited Apr 12 2012I was hoping if someone with a bit more APEX architect experience could comment on some of the limitations I am seeing and if I am making good decisions working around the problem.
Any suggestions are most welcome.
One limitation I have seen is how APEX handles applications and pages. Each application seems like an island, it has its own set of pages, login processes, templates, CSS, JS references etc. As for CSS and Javascript you can have it defined in a central location, but each new APEX application developed still has to be configured to make use of your “standard”.
More traditional web solutions view each web page as standalone and any web page can call/reference any other page and pass session information between them.
However with APEX this does not seem to be the case.
One solution would be to simply have one huge APEX application, where all the pages are owned by this single application.
Unfortunately, we use APEX and EBS R11 (& R12) together; all APEX applications are started from the EBS menus. I had designed a single sign on solution between the two (without using oracle SSO). However each APEX application is unique, like little modules rather than full applications. In other words, we tend to use APEX as an alternative for Oracle Forms - each APEX application being a standalone program.
Still I wanted to be able to enforce the same login process and look & feel across all new APEX application that we write.
So the way I went about it was meticulously creating a “template” APEX application. Imbedded in this template application are all our shared CSS, JS and templates that enforce website look and feel. It also contains our custom library single sign on code and custom debug logger (think log4j but for APEX).
So whenever a developer starts work on a new APEX application, they start by cloning the template and automatically inherit all the functionally and website look and feel.
My concern is if this is really the best way of doing it, or if I am missing something?
I also worry going forward that whenever I want to institute look and feel change across all our web applications that I have to touch each and every APEX application since inception. I am trying to mitigate this by ensuring that nearly all the programming logic is contained in PL/SQL packages, and that the CSS and Javascript are external to the APEX application and only referenced. But this still does not help with templates, or with logic that is imbedded in the actual APEX pages etc.
At least APEX allows you to easily enough copy pages between applications, but this simply does not compare to have a single page shared between all APEX applications.
Is there a better way of going about this?