Posts tagged apex
Jouw toekomst als Oracle professional – AMIS !!EXTRA!! informatieavond over jouw ontwikkelingspad
Jan 24th
Als je dit leest en je bent Oracle professional – ontwikkelaar of administrator – is de kans groot dat je jouw carriere bent gestart in de jaren ‘90, in het tijdperk van Oracle7, Oracle Forms en Client/Server applicaties – net voor de opkomst van Java, internet, mobiel en SOA. Misschien ligt je start daar nog wel voor en misschien ben je van een tikje later. Maar in elk geval: je hebt een solide fundament en al vele jaren ervaring in Oracle technologie.
Nu is het 2012. En de afgelopen jaren is de technologie in hoog tempo ontwikkeld. Web 2.0 applicaties en multi-tier architecturen dienden zich aan en SOA, Service Bus en BPM zijn opgekomen. Java is overal – en HTML 5 staat op het punt om Flash en Silverlight te verdringen, in desktop browsers en in mobiele devices. Eindgebruikers worden mondiger en veel-eisender en real-time, push-enabled, BI-gedreven dashboards en multi-channel takenlijsten worden in snel itererende agile-projecten gerealiseerd.
Oracle 11g Database doet alle simpele DBA taken zelf – en de uitdaging voor de Database Administrator is verschoven naar groter en interessanter, zeker als 24/7 beschikbaarheid, virtualisatie en de cloud als infrastructuur opduiken. Middleware administratie en integrale security zijn zomaar twee nieuwe uitdagingen op de weg van de administrator, naast een verdergaande consolidatie en professionalisering van deployment en monitoring.
De uitdaging voor de Oracle professional lijkt duidelijk: hoe kies je je weg naar de toekomst? Om interessante klussen te blijven (gaan?) doen is het nodig om aansluiting te vinden bij de ontwikkelingen in de markt. Eerst moet je natuurlijk goed inzicht hebben in wat die ontwikkelingen zijn – in de markt in het algemeen en binnen de Oracle technology stack in het bijzonder. Dan moet je uitvinden hoe je vanuit je huidige kennis en ervaring de aansluiting vindt en jezelf prepareert voor het werken met de huidige en komende technologie. En tenslotte moet je het gaan doen – kennis vergaren, ervaring opdoen en je profileren om de passende klussen op te kunnen pakken.
APEX: Make a report row clickable
Nov 29th
When you create a “Report with Form”, there will be an icon in the report which allows you to navigate to the form page. Only when the user clicks the icon this navigation will take place. For the current project, this was not what they wanted. They wanted to click on the row instead of just the icon. This can be simply implemented using jQuery.
OOW 2011 – What’s New, Improved and Coming in Oracle Application Development
Oct 3rd
Currently at Tom Kyte’s session regarding topics new, improved or coming in Oracle Application Development. Tom told about the history APEX has gone thru and the current setup with the APEX Listener and even the “PL/SQL Gateway” was mentioned. I always have to laugh a bit because this last one touches the XDB Protocol Server which can do way more then only this PL/SQL extension for APEX which has been embedded in this XDB Protocol Server framework. There is a APEX book out there that touches a bit the possibilities of the framework, one of the reasons I will promote and explain it a bit more during conferences like UKOUG, because I think its a shame that people don’t know its full potential. Anyway. Tom stressed once again that APEX is a serious environment regarding the huge websites out there based on APEX supporting 1000th of user sessions. Also it nowadays had a better debug support (4.1) and use / support for ROWID, improved data upload and calendar wizard support and redesigned websheets in APEX 4.1.
Leveraging APEX in XE 11gR2 to rapidly load Excel data into a database table
Jun 18th
Whilst preparing for the Thursday Thunder session at the last day of the ODTUG Kaleidoscope 2011 conference in Long Beach, where an all star team of moderators and developers will present a live application development session with key components from Fusion Middleware, I came across a very useful feature of APEX, readily available in my local light weight Oracle XE Database 11gR2.
The Thursday Thunder session will create a portal for participants of a technology conference just like ODTUG Kaleidoscope itself. It will also create a back office application for the conference’s organizing team and it will model and implement a key business process addressing the submission, acceptance and delivery of presentations at the conference. This session has three moderators – Chris Muir, Lonneke Dikmans and Duncan Mills – and a development team of five – Edwin Biemond, Peter Ebell, Ronald van Luttikhuizen, Luc Bors and Steven Davelaar. In order to have a case that is as realistic as possible, I requested the ODTUG organizers for the actual data of this year’s conference – in terms of presenters, sessions and the planning of them all.
They were very helpful and almost instantly provided me with the requested data – in an Excel spreadsheet file. We need to have that data in a bunch of relational database tables. My challenge therefore was to import the data from the spreadsheet into the database. A couple of options are open to me – including an external table in the database, some custom code for reading the Excel file or its csv counterpart or I could make use of the APEX utility in the SQL Workshop component. I used the latter – and it worked like a charm.
XFILES APEX Community Edition (XACE)
May 19th
Roel Hartman and me are currently very busy with our Kaleidoscope 2011 presentation “XFiles, the APEX Version: The Truth is in There…“. During this presentation, we will demonstrate the awesome possibilities you can create when you combine the APEX and XMLDB functionality of the APEX database environment. And as you probably also know, two “no cost options” delivered with your Oracle database. Our first presentation/demo will be on the AMIS Kaleidoscope Preview Sessions on the 14th of June, to test our “setup” and combined presentation for the real thing during Kaleidoscope, in Long Beach, USA, this year.
Background
The demo will demonstrate how to setup database build-in versioning capabilities, based on standard XMLDB functionality, that can be used by or for APEX applications, while making use of the file/folder metaphor of the XDB Repository.
Getting started with … your career (in Dutch)
Apr 21st
Als bezoeker van deze blog ben je bezig met het maken van mooie oplossingen en nieuwe uitdagingen op technisch gebied. AMIS nodigt je uit om ons team te komen versterken. AMIS wil je op het gebied van Oracle en Java uitdagen de volgende stap in je carrière nemen.
AMIS merkt al enige maanden dat de markt voor Oracle en Java opdrachten aan het aantrekken is en maakt dat concreet met het uitvoeren van innovatieve opdrachten.
Om je een beeld te geven van het werk bij AMIS volgt hieronder een lijst met de trajecten waar we de afgelopen maanden aan gewerkt hebben.
- OSB / SOA Suite implementatie bij een grote informatieverwerkende organisatie.
- Realisatie in ADF 11g van een backend applicatie voor een internetwinkel.
- Realisatie van een SAAS oplossing op basis van Hibernate, Seam en RichFaces.
- Realisatie van een medisch registratiesysteem in ADF.
- Advies op het gebied van het gebruik van ADF 11g in combinatie met JHeadstart voor een energiebedrijf.
- Realisatie van een SOA / BPEL implementatie voor een pensioenfonds.
- Realisatie van een administratiesysteem voor een verzekeraar buiten Nederland (EU) in ADF 11g en JHeadstart.
- Oracle XML DB implementatie voor een grote bank.
- Realisatie van een SOA Suite / BPEL oplossing voor een grote logistieke leverancier.
- Proof of concept ADF 11g bij een groot adviesbureau.
- Oracle APEX / GIS implementatie bij een groot adviesbureau.
- SOA / BPEL traject bij een grote gemeente.
- Oracle WebCenter, ADF 11g, SOA Suite 11g en OSB traject bij een grote wereldwijde dienstverlener.
- Webservice koppeling met ADF en JAX WS voor een grote gemeente.
- Advies en implementatie van een professionele ontwikkelstraat bij een IT-bedrijf
- …..meer
| We zoeken Oracle, SOA, Java developers die als medewerker van AMIS de vervolgopdrachten gaan uitvoeren. En denk niet direct dat je hiervoor te weinig kennis of ervaring hebt: jouw toekomstige ervaren collega’s doen niets liever dan jou verder helpen. Ons trainingsprogramma voorziet in een grote diversiteit aan opleidingen en tijdens onze interne kennissessies kun je op veel terreinen iets van je collega’s opsteken.
Kom ons eens van wat dichterbij bekijken en maak een afspraak voor een kennismakingsgesprek via Eva van der Kleij op info@amis.nl of bel naar op 030-6016000. Bel ons ook als je meer wilt weten over werken bij AMIS of een van de onderstaande functies. Concreet hebben we de volgende vacatures:
Wellicht sta jij volgende maand met een artikel op deze blog, schrijvend over de nieuwe dingen die je hebt geleerd of toegepast. Tot ziens bij AMIS! |
APEX plugins contributed to the APEX community by AMIS developers
Feb 7th
I have to admit that, even though I have tried on several occasions to dive head first into APEX, so far I have only wet my feet. I have played a little with APEX 4.0, liked the development experience [a lot better at least than the 3.x world] and found that many concepts are the same, whether your do APEX, ADF or [presumably] .NET web application development.
One of the nice features in APEX 4.0, that allows for more more organized, better structured development with lots more reuse potential, is the plugin framework. Through this framework, interesting and reusable pieces of functionality can be shared within and across applications – as well as across the APEX developer’s community. And that community is something to be reckoned with with many, many developers around the world.
Some very enthusiastic and quite active members of the APEX community work at AMIS. And they have produced a number of plugins, and shared several on the Plugin Directory: http://www.apex-plugin.com/index.php.
APEX: Creating a form based on a procedure
Nov 12th
Introduction
Within ApEx for a while it has been possible to create a page (more specifically, a form) based on a procedure. A procedure enables you to build in more logic than a simple DML statement or otherwise. My example is relatively simple in that when I want to book an appointment with somebody, I do not want this appointment to overlap with somebody else’s. Maybe I even don’t want my appointment to be directly after or before another one, and want a 15 minute break.
Scenario
Build the procedure
This kind of scenario is not easy to realise if you don’t have a plan. The plan is therefore to build an INSERT statement (into a procedure, not a function!) that is only actually executed when there is enough room for my new appointment – in terms of time – in my agenda. Building this procedure is done in the Object Browser area of Apex (Home –> SQL Workshop –> Object Browser; press Create).
To check that there are actually no overlaps you need to know when the appointment starts and how long it will take. (Loads more additional features could be added, I am trying to keep the example simple for now). This justifies at least 2 IN-parameters for a procedure to be built, starting moment and duration of the appointment. Another parameter will be used to return the answer. This answer must be of a textual character (!), saying something along the lines of “Your appointment was successfully entered into your agenda”, or “Your planned appointment is overlapping with another”. Allow for at least enough characters to hold this message, as an OUT-parameter in your procedure. The procedure could look something like this…
Note the use of the parameters at the top and what purpose they serve. The OUT parameter is populated with an informative message that will appear in the form that we still have to build.
Build the page
The next step would be to build the page. It is obvious that you need to test in some way that the procedure works. Therefore relevant tables and reference data must be available.
![]()
- Move to the relevant application and create your page. Therefore press the yellow Create page button.
- Then select Form and press Next.
- Then select Form on a procedure and press Next.
- You are prompted to select the schema owner of the procedure to be used. Press Next.
- The next screen enables you to select the relevant procedure from a list of values. What is slightly misleading is that the list of values also displays functions, which in this context are of no use, sadly. Select the required procedure and press Next.
- Then a page displays with 7 entries, of which the compulsory entries are depicted with an asterisk:
- A default page number is displayed. You can modify it, if you have thought up your own page numbering system. It is a compulsory entry.
Define a page name, equally compulsory. - Define a region template. You can leave this as is for now.
- The next entry, region name, is also compulsory. Make this an explanatory piece of text, as it will appear on top of the region.
- The next two entries enable you to enter Submit and Cancel button labels. You may prefer to display labels in another language.
- The final entry enables you to choose to have a breadcrumb displayed at the top of your page. Leave this value as is.
- Press Next.
- You will be presented with a screen that enables you to select a Tab (existent or now) or no tab at all. For now leave this to the default setting, and press Next.
- Next you will see a screen quoting an optional invoking button. This is an extra button that will be created somewhere else in your collection of pages within the application, that enables you to move to the page that we are currently making. The page where you want this button to be created can be defined in the first entry, for which a list of valid values is available.
In the second entry you can simply type the label for this button. Should you leave these 2 entries empty then no such button will be created.
For now we will not do any such thing yet. - Press Next.
- The next screen enables you to define which pages to move to when you either press the Submit or Cancel buttons. Please define two pages, making use of the offered list of values. You may even decide to use the same page for the two different buttons. Press Next.
- Now you are presented with a screen that makes use of the parameters that were defined for the procedure involved.

- Here you can see quoted the 3 names of the parameters, for which you can modify the labels (the names that appear in the form yet to be generated). Names in the example start with ‘D’, like the names of the parameters themselves. The 3 settings Include should be left set to Yes. In the Default entry you can set default values. The values to be entered depend on the technical functionality of the procedure. If the procedure takes care of default values then the application does not need to do so, and vice versa. Note that in this scenario dates of data type Date are involved, being D_START_DATUM. For all 3 items the Display Type may be kept to Text.
- Please note that the D_BERICHT parameter according to the procedure will contain a message that can be used in the application.
Press Next. - You will be presented with a Form on Procedure confirmation. Press Finish.
- You will be given the options of Running or Editing the page. We are so anxious now, so press Run Page.
Something like this will be presented to you:

A few more points need to be addressed before the form will actually work properly:
- This is hardly a form that you can present to a user. To at least make it a bit more presentable give the user a calendar display type (this would have to include the time, not just the date) when dates need to be entered.
- A default value for the minutes (this is the number of minutes that an appointment would take) could be set at 60 or 90.
- The D_MESSAGE can be left empty. The procedure should use this to fill in an appropriate message.
- The previous warning in this text saying that we are dealing with data type DATE (namely D_START_DATUM) we will hit upon now. A change in one of the processes is mandatory for this form to work.
- Finally the names of the fields and the forms need to be modified.
To address these issues we need to do the following:
-
Press Edit Page xx, in my particular case it was page 13. A screen very similar to this will appear:

- In the Page Rendering box: Right click on P13_START_DATUM.
- Press Edit.
- In the Name box, set Display as to Date Picker.
- In the Label box, adjust the Label, by removing the trailing D.
- In the Settings box, set Format Mask to DD-MON-YYYY HH24:MI (use the list of values).
- Press Apply changes in the top right of the screen.
- Similar steps for the Minutes entry can be executed to check that there is a default value defined.
- When you are back in the screen where Page Rendering is at the top, right click on Run Stored Procedure underneath the Page Processing header and select Edit.
- Modify the code as follows, noting that it is a call to the previously defined procedure, which needs to be adjusted so that the data (namely data of type DATE)is dealt with properly:
- Press Apply Changes.
- Press Run Page, and check that the functionality is correct.
#OWNER#.P_ENTER_PLANDATE(
D_START_DATUM => TO_DATE(:P13_START_DATUM, 'DD-MON-YYYY HH24:MI'),
D_MINUTEN => :P13_MINUTEN,
D_BERICHT => :P13_BERICHT);
Conclusion
We can conclude that there are many things in Apex that can be realised, but sometimes Apex needs some help from us. The modification in the code that Apex made for us was not sufficient for it to work properly. When building code you will find more often that you are reminded of the fact that you are actually trying to build an application for the internet, and that browsers don’t really take data types of type date (and probably others also) into consideration.
The text in this blog is by no means complete. It is merely trying to inspire people to use – in this case – forms for a procedure. Please do not hesitate to leave any comments, feedback or additions to the text offered to you. Thank you for your attention.
Dynamic Actions in APEX
Nov 5th
After visiting the OPP/APEXPosed conference in Brussels I decided to write a post on how to create a relatively simple dynamic action in APEX. When you are working with password fields your only visual check to see if the entered text in both fields match may be the number of characters entered. Of course you can check for equality on submit but that may be a bit too late for the user.
For this post I will work with a textfield instead of a password field, but both will work the same.
Oracle Open World 2010 presentation: Forms2Future: the ongoing journey into the future for Oracle based organizations
Sep 21st
Many organizations around the world have adopted Oracle technology for developing custom applications. Over the past two decades, they may have used PL/SQL, Reports, Forms, Designer, Portal or the Web PL/SQL Toolkit. Many of these organizations have come to face new challenges: more agility or functionality, new user groups or channels or more efficient maintenance. Or they fear getting stuck in the past, running out of support or qualified and motivated resources. What is the right way to approach the future? What mix of tools, how and when to adopt which new technology, how to build a business case? This session recounts various more and less successful warstories of organizations that embarked on a journey into the future.
Peter and I today did our session together about the road to the future for organization that heavily us Oracle software. It was a good session with a lot of interesting questions. It is quite clear to me how much confusion there is, how many organizations are struggling with defining their future plans. How many people hear mixed messages from for example Oracle sales people. And how they simply would like to get a clear, untainted and unbiased picture of what the options (and reasons) for making future oriented moves. This presentation for many attendees proved a valuable step in that direction. We would like to continue these conversations!





