Archive for July, 2008

On Project Success Factors – Heading straight towards the goal I

 “To follow, without halt, one aim: There’s the secret of success.” (Anna Pavlova, a famous ballerina). Completely true of course. A project rarely fails due to one large incident or problem. More often they shift of course imperceptibly, in small steps. Each individual shift is of almost no consequence, the combination is a whole different story.

A few years ago I had the opportunity to experience that again for myself. I was a parttime project manager (“just an additional few hours of work, you know”), we implemented Microsoft Sharepoint (“we are an Oracle and Java company, but this seems to be the best product”), we went with the Beta-release (“it has so many features we need”), we did not adhere to standard functionality (“adding this is very easy, don’t worry”) and we did it iteratively (because we did not know where we were going ;-) .

It never ceases to amaze me that everything we do right in our projects for our clients, we instantly forget when doing an internal project. Looking back there were at least five moment where pulling the plug would have been the best possible decision, but…you know: “we have come this far”. Our intra- and extranet our running succesfully now. It could have been much cheaper though.

Project Management is not something you just do, next to your regular job. That is an illusion: you miss any proactivity and you are reduced from running from one crisis to the next. That goes for customer and internal projects.

Database upgrade apex.oracle.com

Oracle has upgraded the apex.oracle.com service.  Now you can use this free service to evaluate Oracle Application Express and  (some of) the new PL/SQL and SQL features of the Oracle 11g database. The database was upgraded to 11gR1 on July 27. The installed Oracle Application Express version was not upgraded (version 3.1.1).

 

Closing the Gapp on Oracle Open World?

I don’t know about you, but while I try to make an interesting Oracle Open World schedule for me this year, I noticed that this is not an very easy task via the Schedule Builder. What I don’t understand is why they didn’t provide a selection on a per day basis. It would make my selection more easy if they would have implemented a method that would allow me to filter on a topic per day basis.

While fiddling around with the option in the Schedule Builder, I noticed that, regarding the AMIS entries, Gerwin’s presentation about Oracle performance tuning called: "Jumping The GAPP" hasn’t been given any attention yet. In my believe, you should really do yourself a favor because Gerwin’s presentation is really worth going to.

It will provide you with a good understanding how to apply a performance method, while being bound by, for instance company-, restrictions that won’t allow you to enable in-depth performance tracing. Also it is a generic method that can be applied, not only to Oracle software, on the whole participating elements / nodes / etc of your topology. Gerwin’s presentation made a very positive impact in the spring off this year during Hotsos, so if you weren’t there…have a look during OOW2K8…

Gerwins presentation for OOW2K8 is the following:

Session ID: S300193
Session Title: Jumping The GAPP
Track: Oracle Develop: Service-Oriented Architecture

 

Sincerely,

 

Marco   

The influence of the experience economy on IT architecture

AMIS is puting more and more emphasis on IT architecture. That is one of the reasons why I am doing my Masters in IT architecture and why AMIS is starting a knowledge center about IT architecture. The following paper is written for one of the masterclasses (Applying Architecture) that I have followed so far.

Introduction
Companies that are able to provide their customers an experience by providing emotionally and psychologically gratifying products perform well in the currently very competitive marketplace (Free, 2006). Companies like Apple, Disney and Starbucks are able to sell their products based on an added user experience. Customers are willing to pay more for products largely based on the emotions that these products raise to their buyers. Maybe Apple is one of the most well known companies that excel in delivering an added experience with their products. Apple customers identify themselves with the companies’ products. They want to show that they are different (European Centre for the Experience Economy, 2005).
This paper describes how the experience economy influences the role of an IT architect..... Read the rest of this entry »

Debug Logging in BPEL using Sensors – Part 1

When developing and/or debugging BPEL processes, the Oracle BPEL Console is your best friend. Every change to every variable, every activity that was executed, everything is right there for you to inspect, whether the instance is still in-flight or already completed. But although this sounds like the ultimate debugging tool, I’m sure you’ve noticed like me that when your processes get really big (which they tend to do rather quickly), there’s two reasons why debugging can be difficult. The first is plain and simple “information overload”. If your audit flow contains hundreds of activities and possibly thousands of variable data changes, finding an individual piece of information is not trivial. I find the second reason, however, to be of even more profound impact: the BPEL console will not show you the execution path through your process flow (which would indicate which parts of the code got executed, and which didn’t), but rather it displays a long, sequential list of  Activities that were executed. Especially if you have a lot of switch and/or pick statements, and if your code contains loops (in which case each iteration will add all executed Activities to the list), determining “what happened” during execution of your instance from this long, long audit trail might prove a challenge.

In a “mini-series” of Blog entries, I will share a number of techniques that I have used in situations like this, to extract logging/debug information from a BPEL process instance using BPEL Sensors. This first entry will focus on a simple, straightforward form of logging, using a “Variable Sensor” to provide a sort of “management summary” of the execution of a BPEL process instance. .... Read the rest of this entry »

Referential Integrity with Virtual Columns, the Sequel

The comments on the blogpost on Referential Integrity with Virtual Columns lead to this entry.

As a recap: In the above mentioned blog post I showed how you can use a Virtual Column – a new feature of the Oracle 11g Database – to disect a composite value and use part of it in a foreign key constraint.

Nigel Thomas and Lucas Jellema suggested it the other way around. Use a Virutal Column to create a foreign key to a "generic" table. For this example I will use Nigel's suggestion using CG_REF_CODES as a generic lookup table.

.... Read the rest of this entry »

Oracle & JDBC – Passing a ‘table of custom object type’ to a stored procedure – implementing efficient single round trip data exchange (part two of an ADF application on a PL/SQL API)

One very efficient way of passing data from the Java application to the database is through the use of custom Oracle Types. Even when we want to send a heterogeneous data set, for example a data set with master and details records, custom type based objects can provide a powerful exchange of data. However, also one that is not extremely straightforward to get started with. In this article an example of how to send a TABLE OF MY_TYPE objects as an input parameter to a stored PL/SQL procedure. .... Read the rest of this entry »

Creating an ADF application based on PL/SQL API – part one: reading data as a Collection of SQL Type Objects

In this article something you may never do in exactly this way. Yet something that may become increasingly more useful, as our databases will have ever more Data Service APIs and wrappers around core tables. Instead of querying tables or even views, we may very well be talking to APIs from our Java applications, getting custom SQL Collections filled with custom SQL Type based objects instead of a regular result set from a simple SQL query.

The function in question: librarian.get_books_by_author( p_author in varchar2) return shelf;

Shelf? Yeah, that is a Collection, defined as:.... Read the rest of this entry »

Referential Integrity with Virtual Columns

During ODTUG, a couple of weeks ago, Tom Kyte did a presentation on the "Top 10 11 things about Oracle 11gR1". The presentation can be downloaded from asktom.oracle.com. He started by saying the Oracle 11g Release 2 can be expected the end of this calender year.
One of the things he showed was a way to clean up your model using Virtual Columns, a great new feature of the Oracle 11g database.

Use Virtual Columns to Clean up your Model

Virtual Columns are introduced in Oracle 11gR1 and are very usefull. A virtual column feels just like a "real" column but with a major difference. They are based on an expression: a SQL function or a User Defined Function. Just to show you a quick example, here is the definition of the infamous EMP table:

SQL> desc emp
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)

.... Read the rest of this entry »

Juggling met SQL Types in SQL and PL/SQL – fading borders between Collection and Table

While preparing for a whole different topic, I had to create a few demonstrations of using custom SQL Types and Collections in both SQL and PL/SQL. While nothing spectacular – and for anyone who attended our 7Up class pretty familiar stuff – I thought an example of these small demos of how to create and use Type and Table of Type with for example the TABLE operator (to cast the Table of Type Collection into a relationally accessible construct) and the Merge operation as well as the Collect aggregator for producing quickly a Collection from the result of a simple SQL Query, might be useful. If for no one else, than for me – as I always tend to forget the exact syntax.

Note: all scripts are in a file you can download at the end of this article..... Read the rest of this entry »