Oracle Apex in the IT-World

Today two different colleagues sent me — almost at the same time — a mail, each with a different URL, referring to articles on the web dealing with the new release of Apex 3.0.

This proves that one starts talking about Oracle Application Express outside the (small ?) community of Apex adepts and bloggers.

The first one is published at ITworld.com and is quoting Mike Hichwa, vice president of software development, already talking about the big ambitions coming with release 3.1, which is likely to appear before year-end !

The second article can be read at Nasdaq.com. Among others, it contains some testimonials by organisations explaining why they decided to choose Apex as development platform.

See also the blog by Scott Spendoline “Apex 3.0 in the news“.

Oracle Forms: the road ahead…

At iAdvise we have about 12 full-time Oracle Forms consultants/developers, the complete Cronos group has got about 30 consultants/developers working with this ancient toolset ;-)

To stay up-to-date with current developments, I attended the “Oracle Forms: the road to SOA” seminar a few weeks ago (mar 6, 2007). This seminar was hosted by Oracle UK (London) and I think I was the only person from Belgium on site. Keynote speaker was Grant Ronald, Principal Product Manager in Oracle’s Tools division. He did a very good job explaining Oracle Forms is still alive and kicking . Even though a lot of people seem to doubt (some even regret) it, Oracle Forms will be around for many, many years to come.


A few months ago I also attended an Oracle web-seminar, hosted by Oracle HQ Forms Product Management (Jan Carlin) about new features in Forms 11. To be honest, I was one of the non-believers at first, just look at my comments on this post on the EuroTransplant blog.

Since then, I’ve read al lot of things about this issue and I’ve changed my opinion. Just look at some of these facts:
- Even though Grant could not provide exact numbers, he claimed 35-40% of all companies using an Oracle Database are also using Oracle Forms (custom build applications or Oracle Apps). Because of this very large install base, A LOT of money has been (and is being) invested in Oracle Forms. It’s naive to think any technology will take over this position in the short future.

- According to Grant, the Oracle Forms forum is in the Top 5 on OTN (only after SQL – PL/SQL – Database if I’m correct), with hundreds of new threads/messages each month. So, even after 20 years, Oracle Forms still is one of the most popular development platforms Oracle provides.

- Oracle’s current motto about Oracle Forms is “Upgrade & Integrate”. There are a lot of Oracle Forms applications worldwide which still run in character or Client-Server mode. In general it is much cheaper / quicker to upgrade these forms, instead of completely rebuilding them in a new environment. In fact, integration features of Oracle Forms 11 will make it even easier to leverage investments of the past.

- It’s been said many times before, but just read the Oracle statement of direction about Oracle Forms: Oracle Forms is supported until 2013 at least!

Quote from Jan Carlin (Oracle Forms product manager) on Jan 5,2007: Oracle have no plans to discontinue development or maintenance of Forms. Oracle Applications will continue to use Forms for at least another 10 years and we have many tens of thousands of customers using Forms for applications with thousands of users all over the world. We would be undermining ourselves if we desupported Forms any time soon.

With this in mind, I asked myself a few questions:
- What are claims like “Oracle webforms doesn’t have a real future anymore” or “Oracle Forms is history” based on? Which facts or official statements can you provide to support these statements?
- Why would you recommend a switch in development platforms to a customer if their current Forms investment perfectly fits their business needs?

I found no satisfying answer to any of these questions, so it’s pretty obvious I had to change my original opinion. I hope sales people will do the same ;-)

Feel free to give your opinion on this…

Wouter

Apex, a 4GL-for-the-Web…

Until now, Oracle JDeveloper (with ADF) was always positioned by Oracle Corporation as the successor for Oracle Forms.

Now, with the release of Apex 3.0, it is the first time, — as far as I know — that Oracle Corp. considers ‘openly‘ Apex as an alternative for Forms.

On the restyled Oracle Apex Home on OTN, you can find a small comparison between both tools: both declarative, SQL & PL/SQL driven, … Read the rest of the article here.

Especially, pay attention to the “development status” of both products: Oracle forms is in ‘maintenance mode‘, while Apex is in Active Development‘!

Apex Evangelisation To Do …

As announced in one of my previous blogs our Apex seminar took place yesterday.

More than 50 people registered and came over to the offices at Oracle Belgium to listen to the different presentations, case studies and testimonials. The audience consisted of people with very different profiles: developers, project leaders, managers and decision-makers. We tried to find an equilibrium between the more technical demo’s and the real show cases.


It was not that easy, but – if we may believe the evaluationsheets and the reactions after the sessions – I think we met the expectations of all the attendees.

For those who could not be present, we provide a link where you can download a zip-file with the presentations.

One of the things that striked me the most was the fact that Apex is not yet that well-known as I suspected. We, at iAdvise, are now already working with Apex for almost 2 years; we did different projects. On the internet you see that the community is growing (e.g. Apex on OTN), but not yet in Belgium… Within the audience, there was only two (!) persons (of which one then still of the Netherlands !) who really worked with the tool; in the after-talk one of the people said that she had never heard of Apex before…

So we still have to do some Apex-evangelisation

There is however one common problem where a lot of people struggle with. The often heard remark was: ”We are now working in the traditional Oracle forms, often still in C/S mode. Which direction should we take? Web-forms, knowing that this technology does not have a real future anymore, Jdeveloper with ADF or Oracle Application Express”.

It is my personal believe that Apex is a very good alternative for Oracle Forms, maybe not for all applications, but Apex is also much-much more than an alternative for excel and ms-access (i.e. the way Oracle originally positioned the tool).

I am curious what other people think about this. Feel free to post your comments …

Apex Collections, an example (part 2)

Here is the second part about collections, my problem could be described as:
we would like to let users add order lines to an order, update and delete them without saving anything in our database until the user confirms that the order is correct and wants to create it.


1.4 Add Member to Collection
We can now create a process that will add members to our collection and link this process to our ‘Add Row’ button.

1.5 Update Collection
Now that we can add rows to our collection, it’s time to update it. With ‘wwv_flow_collection.update_member_attribute’ we can update our collection. We must specify the collection name, seq_id, the column and its value. Create the process without any condition.

1.6 Delete Collection
Finally we can make sure that users can delete members from the collection. We will use the checkbox for this. Create a process that will be executed when the delete row button is pressed. Use ‘wwv_flow_collection.delete_members’ to delete a member from your collection. We must specify our collection name, the column where we are looking for and then the value for that column.
We will use our key value in p_c001 to delete members from our collection.

1.7 Save Results
Last but not least, we can store the members from our collection to the right table. I use a database procedure for this:
INSERT INTO order_lines (order_line_id,
order_id,
description,
amount,
line_nr)
SELECT c001,
p_invoice_id,
c002,
c003,
seq_id
FROM wwv_flow_collections
WHERE collection_name = ‘ORDERS';

1.8 Summarize
Page 1:

(note: processes are conditional with a request so the user can browse back to page 1 without deleting his collection)

Page 2:

Apex Collections, an example (part 1)

Some weeks ago I needed to store records temporarily and let a user decide later on if he/she would save the data permanently. This was a perfect time for me to start using ApEx Collections. Collections let you temporarily store data as records so you can manipulate them and save them later on. I found a whole bunch of information on the oracle forum but I couldn’t find the right information I needed, so therefore this post

My specific problem can be described as: we would like to let users add order lines to an order, update and delete them without saving anything in our database until the user confirms that the order is correct and wants to create it.


1.1 Delete Collection

Our first step when working with collections is to make sure that no collection with the same name exists. So create a process ‘on Load – Before Header’ that deletes a collection with the collection name you are using, in this case that would be ‘ORDERS’. We can use ‘wwv_flow_collection.delete_collection’ to delete a collection.


1.2 Create Collection

Now we are ready to create our collection, use ‘wwv_flow_collection.create_collection’ to create your collection. You might notice that there is already another thing I do, I already put one record in my collection. You are not obliged to do so but I do it here because now the user can already start filling the collection without pressing on a add row button.


I use ‘wwv_flow_collection.add_member’ to put a record in my collection. You must specify your collection name and then you must use p_c001 – p_c050 to specify your columns. In my first column I put a unique key that I will use when deleting a member from my collection. The third column specifies the amount and will be default 1.

1.3 Display Collection

Now we are ready to display our collection and update/add/delete members from it. Create a new page with a report where you will display the collection. Make sure you can navigate to it from the page where you create the collection (you can do it on the same page if needed). Add 2 buttons to your report, one to add a member and one to delete a member of your collection.

Some things explained:

  • Our first column is a checkbox that will allow users to delete selected lines from the collection. The function ‘pck$genlib.f_get_next_row_id’ will return your row_id (0001,0002, …) so we can refer to the specific row in a correct way.
  • The second column is the seq_id, automatically assigned to your collection members, we need this value in order to update the right member from the collection.
  • The other columns must be displayed as text fields so we can put data into them.

Part 2 will include adding, deleting and updating members from your collections and will be posted very soon.