November 06, 2006

OOW Summary

Here you see the Howard-Street, during the OOW 2006. The whole street was one big tent:



























Regis Louis and his overview about JDeveloper 11g was very refreshing, because the toolset is the center of Oracles new Fusion-Technology.




















Steven Feuerstein discused in his presentations new ways to create exception-handling in PL/SQL and how to use a professionell unit-testing-software like utPLSQL.




















Very interesting was his announcement, that he will publish a new application named Quest Code Tester, which helps you creating test-cases for automated PL/SQL-unittests. Production Releases are available in 6 months. This is the link to the new homepage for all tools around those new applications:




http://www.toadworld.com/




Bryn Llewellyn (creator of PL/SQL) showed us in his "Meet the Guru"-hour the new features of the Oracle Database 11.

The most powerful new topic is the "edition". This means that you can create a complete new version of a package / view / table. With an easy "alter system set edition = ..." you change to different versions.

e.g. when you have a set of new packages and want test them on the production-db. So you create the new packages in a new "edition". After that you can change the usage of the two versions online while the database is running. Testing the new packages and reseting to the old ones is done in seconds !














These were some of the most interesting news of the Oracle Open World

October 26, 2006

Oracle Open World 2006

Big, bigger, moscone! This is what I'm aware about, when thinking back to this years Oracle OpenWorld.

42000 people attend Larry's big show and it become more and more each year


Larry's announcement this year was: "We give you Red Hat Linux-Support, better than anybody else in the market and less expensive".


This years toy :

October 22, 2006

Arriving in San Francisco

Yesterday was the starting day of my oow-vacation.

Here are some impressions of the first night. Today at 7 AM was starting time of the Nike's Woman Marathon in San Francisco at the Union Square

The best runner started at 6:40.









































October 19, 2006

AOUG Conference 2006

Yesterday I was invited to hold a presentation at the yearly Austrian Oracle User Group in Vienna.

Did you know Vienna? It's such a lovely city with castle's, old buildings and coffee-houses. You'll love it, too.

My presentation was "Oracle Forms 10g and the communication with SOA via BPEL"

September 29, 2006

OOW is coming closer

Gosh! Is that a damn hard work to build an oow-schedule in the biggest schedule builder I've ever seen.

Hundreds of good presentations and all of them are parallel at four days and only a few possible timeslots. So you sit before your browser and have to check in to the best presentations. But where are the best presentation when you scroll through 60 parallel slots per time-slot? It's hard work to read all the titles and authors.

and then: Tom's presentation is full - oh no! - a waitlist for those, who came late
but: Steven's isn't full yet! So let's book the last seat - and do it fast

August 03, 2006

Different presentation

last week was a hard week !

Monday I got my invitation to the Oracle World from the EOUC.

Friday Oracle rejected my presentation about Forms-Integration in BPEL, because they have the same topic. But they gave me the chance to post a different presentation.

This Wednesday I got the invitation from oracle to present BI Beans


Developing Powerful Oracle Business Intelligence Beans in Oracle Forms

BI Beans replaced Oracle Graphics as the new graphical standard in Forms. For this new java based technology forms developers do not need java experience. In the presentation you learn the easy way to install BI Beans, communication between Forms and BI Beans and how to develop powerful graphical applications.

July 25, 2006

Invitation to OOW 2006

that's it. I got an invitation for a presentation at the Oracle Open World 2006 in San Francisco.

Oracle Forms & BPEL do work hand in hand in the SOA-world

With the come up of service-oriented-architectures it is mandatory that Oracle Forms communicates with the companies automated business processes. In this presentation you'll see, how easy it is to establish a "dialogue" between Oracle Forms and BPEL. The integration will be demonstrated with an example-application: the setup in Oracle Forms, the web-services you need in and around the BPEL-engine and how you poll process-messages in Oracle Forms.

July 24, 2006

Creating a Forms Framework

Since more than 10 years I'm working with Oracle Forms and deal with the question: How to work efficient with a 4 GL like Forms.

It's very easy to create a form and run it. But it's not that easy to create big applications with hundreds of forms and not to invite the wheel every day.

So you have to invite the wheel once and use it in all forms-applications that have to be developed. The best way is to :

- create a style guide for your application
- define reference-forms and templates for your developers
- build prototypes with your framework

That sounds easy and it is easy, if you have a lot of experience and know, how to work with forms.

Here is the link to my new sourceforge-project, where I publish the sources for this framework, the guidlines to work with the framework and more...

http://sourceforge.net/projects/forms-framework/


Some topics of the style guide are
- exception handling
- dynamic message handling
- access right for forms and special functions
- dynamic menues for the start-application
- PL/SQL-libraries

July 21, 2006

Using CLOB's in Forms 6i

It's not possible to use the new datatype CLOB in Oracle Forms 6i.

So let us invent a workaround !

Assumption: Table EMP in the db has a new column Note_CLOB, A form with the block EMP and all EMP-columns without the CLOB.

Requirement: The CLOB-column from the db should be shown and editable in the form.

First create a textitem "Note_CLOB" in the block EMP:

Item-Properties:
- Data Type CHAR
- Maximum Length 32000
- Database-Item No

Item-Trigger:
- WHEN-VALIDATE-ITEM

:EMP.EMPNO := :EMP.EMPNO;

Block-Trigger:
- POST-QUERY
POQ_EMP;

- PRE-UPDATE
PRU_EMP;

These program units are needed for the form

PROCEDURE POQ_EMP IS
V_String VARCHAR2 (1000);
V_Index NUMBER := 0;
BEGIN
LOOP
V_String := Read_CLOB (:EMP.EMPNO, V_Index);
IF V_String IS NOT NULL THEN
:EMP.Note_CLOB := :EMP.Note_CLOB || V_String;
V_Index := V_Index + 1;
ELSE
EXIT;
END IF;
END LOOP;
END;

PROCEDURE PRU_EMP IS
V_String VARCHAR2 (1000);
V_Index NUMBER := 0
BEGIN
Clear_CLOB (:EMP.EMPNO);
LOOP
V_String := Substr (:EMP.Note_CLOB, 1 + V_Index * 1000, 1000);
IF V_String IS NOT NULL THEN
Append_CLOB (:EMP.EMPNO, V_String);
V_Index := V_Index + 1;
ELSE
EXIT;
END IF;
END LOOP;
END;


This routines are needed in the database


PROCEDURE CLEAR_CLOB (P_EMPNO IN EMP.EMPNO%TYPE) IS
BEGIN
UPDATE EMP SET Note_CLOB = NULL
WHERE EMPNO = P_EMPNO;
END;

PROCEDURE APPEND_CLOB (P_EMPNO IN EMP.EMPNO%TYPE, P_STRING IN VARCHAR2) IS
BEGIN
UPDATE EMP SET Note_CLOB = Note_CLOB || P_String
WHERE EMPNO = P_EMPNO;
END;

FUNCTION READ_CLOB (P_EMPNO IN EMP.EMPNO%TYPE, P_INDEX IN NUMBER) RETURN VARCHAR2 IS
V_STRING VARCHAR2 (2000);
BEGIN
SELECT SUBSTR (Note_CLOB, 1 + P_Index * 1000, 1000)
INTO V_String
FROM EMP
WHERE EMPNO = P_EMPNO;
RETURN (V_String);
END;

with this technique it is possible to read and write 32K from a CLOB.

try and test it

October 12, 2005

Global Constant-Package

When you need literals and constants in forms, then the easiest way is to hardcode it in the sourcecode.

But please never do it the easiest way !

Have a look at this source-snippets and get a feeling, how to use them in your own code :

All my forms have attached libraries, in which I store my framework-functions.

One package spec. in this library is the package CONST. This package has no package body.


PACKAGE Const IS
/*
|| Name : Const
||
|| Function : This package contains all global Constants
||
|| Author : 08.08.1999, VOL
|| Updates :
*/

-- Alert
alr_Error CONSTANT VARCHAR2 (30) := 'AL_ERROR';
alr_Info CONSTANT VARCHAR2 (30) := 'AL_INFO';
alr_Warning CONSTANT VARCHAR2 (30) := 'AL_WARNING';

-- Mode
mod_Call_Form CONSTANT VARCHAR2 (10) := 'CALL_FORM';
mod_Open_Form CONSTANT VARCHAR2 (10) := 'OPEN_FORM';
mod_Go_Form CONSTANT VARCHAR2 (10) := 'GO_FORM';
mod_New_Form CONSTANT VARCHAR2 (10) := 'NEW_FORM';

-- Block, Record and Form-Status
sta_Changed CONSTANT VARCHAR2 (10) := 'CHANGED';
sta_Insert CONSTANT VARCHAR2 (10) := 'INSERT';
sta_New CONSTANT VARCHAR2 (10) := 'NEW';
sta_Query CONSTANT VARCHAR2 (10) := 'QUERY';

-- Other
CR CONSTANT VARCHAR2 (1) := CHR (10);
Tab CONSTANT VARCHAR2 (1) := CHR (9);
TRUE CONSTANT VARCHAR2 (10) := 'TRUE';
FALSE CONSTANT VARCHAR2 (10) := 'FALSE';

END Const;

This is only a very short part of my complete Const-package

All sourcecodes in which I now need a literal I change this to a constant from this package

e.g.

IF NAME_IN ('System.Last_Record') = Const.TRUE THEN
--do something;
ELSE
--do something different;
END IF;


This method of using a const-package can be enhanced, if you create another const-package in each form. Name it const_local.


PACKAGE Const_local IS
/*
|| Name : Const_local
||
|| Function : local Constant-Package
||
|| Author : 08.08.1999, VOL
|| Updates :
*/

-- Blocks
blk_Control CONSTANT VARCHAR2 (30) := upper ('Control');

-- Items
itm_Test CONSTANT VARCHAR2 (61) := upper ('Control.TI_TEST');

END Const_local;


With this local package you can now handle all the literals which are needed only in the form. This package can rapidly grow and is the central place for all other functions and procedures.

These packages offer some very important opportunities. All your literals are now constants. That means you have never runtime-errors, when you write a typo. You now have always compile-time-errors.

If you write a literal incorrect, than there is only one place in the const-package, where the constant is defined and the error can occur. Those error may occur, but they are found very fast and can be corrected directly.


Conclusion: Use the global Const-package in a library and use the local-package for all needs you have in the form itself.

Try and use it

September 24, 2005

OOW 2005-Summary

After a dozen of presentations, including my own, some of them were remarkable.

Steven with initially 10 minutes playing SET (www.setgame.com) and after that diving into FOR-Loops and BULK-Collects.














Tom with his 12 powerfulst ways using the Oracle DB 10g Rel. 2. (http://tkyte.blogspot.com/2005/09/oow-presentation-is-done.html)














and Scott in his keynote














The day after the convention I needed some rest. Where can this be done better, than near a little sea with some penguins, a waterfall and in the background some blue high mountains:

Oracle Open World 2005

This year it was my fourth Open World and the third time in the nicest little town of the United States: San Francisco

Larry announced the new life-time-support for all middleware-products. That was a hammer, because I know, what that means for a software-company like Oracle.

Congratulation for this brave statement !


The main topics of the OOW in my mind were:

  • Oracle Fusion
  • Golden future for BPEL


and here's one of Larrys toys down in the moscone center:

Initialize

... and another blog is online ...

This BLOG is for all Oracle Forms-Developer.

In the further posts I show examples of codes, discuss about new technologies in the forms-environment and help those of you, who need assistance in developing Forms.

Have a lot of fun with this new blog
Gerd