Welcome to All Things Warehouse Builder

UI Expert Extensions

David Allan

A number of the experts on the exchange use a series of UI extensions to provide shuttle and data entry controls. They are written in java but project a tcl interface that makes them fairly straightforward to use. You may find them useful or you can use the same technique to construct your own.

The UI extensions include:

  • Capture data input in a table (oracle.owb.jexpert.DataEntryTable)
  • Information selection and ordering (oracle.owb.jexpert.ShuttleObjects)
  • Display info in table, action them (oracle.owb.jexpert.ActionTable)
To utilize invoke the components from OMBPlus or an OWB expert.

The Shuttle

In order to get a list of selections from a list and order those items, you can use the shuttle control. Shuttle from available to selected. The UI labels are configurable, the example below illustrates selecting columns from a table that represents levels (in a dimension to be created). It is a modal dialog.

Invoke this example as;
set selection [java::call oracle.owb.jexpert.ShuttleObjects getSelection "Select dimension levels" "Select columns to identify levels:" "Columns:" "Levels" {"PROD_ID" "PROD_NAME" "PROD_DESC" "CAT_ID" "SUBCAT_ID"}]


The select items will be returned in the variable 'selected', they will be in the order the user has defined. The above returns;

Data Entry Component

This dialog allows information to be collected from the user via a table. In the dialog below, dimension attributes plus the type to level attribute (applicability) to column binding is captured in one dialog (used in the create dimension from expert).

The tcl to invoke this dialog is;
set rowheader {"Attributes/Levels" "Usage" "CATEGORY" "SUBCATEGORY" "PRODUCT"}
set thedata {{"DESCRIPTION" "Standard" "CAT_DESC" "SUBCAT_DESCRIPTION" "PRODUCT_DESC"} {"" "Standard" "" "" ""}}
set selection_model {{} {"Standard" "Long Description" "Short Description"  "Effective Date" "Expiration Date"} }
set selection_model [linsert $selection_model 2 $avail_cols]
set selection_model [linsert $selection_model 3 $avail_cols]
set selection_model [linsert $selection_model 4 $avail_cols]

set data_result [java::call oracle.owb.jexpert.DataEntryTable {getdata java.lang.String java.lang.String tcl.lang.TclObject tcl.lang.TclObject  tcl.lang.TclObject} "Level Attribute-Column Details" "Bind attributes to columns:" $rowheader $thedata $selection_model]


The dialog returns {DESCRIPTION Standard CAT_DESC SUBCAT_DESCRIPTION PRODUCT_DESC} {{} Standard {} {} {}} into the variable data_result.

This control also supports copy-paste, so results can be copied from and to the table. So for example it is also possible to copy from a series of cells in Excel into this dialog to quickly construct objects.


Alternatively the construction of the dialog can be like the following where the columns listed in column 1 are all of the columns excluding the level identification columns, and there will be a default stating all columns will be attributes of the leaf (EMP for example).

set rowheader {"Columns/Levels" "Usage" "DEPT" "EMP"}
set thedata {{"GENDER" "Standard" "false" "true"} {"MARITAL_STATUS" "Standard" "false" "true"} }
set avail_cols {"false" "true"}
set selection_model {{} {"Standard" "Long Description" "Short Description"  "Effective Date" "Expiration Date"} }
set selection_model [linsert $selection_model 2 $avail_cols]
set selection_model [linsert $selection_model 3 $avail_cols]
set data_result [java::call oracle.owb.jexpert.DataEntryTable   {getdata java.lang.String java.lang.String tcl.lang.TclObject tcl.lang.TclObject  tcl.lang.TclObject}  "Level Attribute-Column Details" "Columns-Level applicability:" $rowheader $thedata $selection_model]

The result of the dialog is a TclList with the selections;
{GENDER Standard false true} {MARITAL_STATUS Standard false true}


Action Table

This control is for when you use OWB to get a list of objects (for example results of a search) and display this list and allow a set of actions to be performed on them.

set rowheader {"Name" "Description" "Path" "My Funky Info"}
set displaydata  { {"DATA_0" "Cube for DATA_0" "//OSA_PROJECT/OWBEXP_TGT/DATA_0" ""} {"LOAD_0" "Load Cube Map Sample" "//OSA_PROJECT/OWBEXP_TGT/LOAD_0" ""}}
set buttons {{"Edit" "OMUALTER"} {"Properties" "OMUPROPERTIES"} {"Lineage" "OMULINEAGE"} {"Cancel" java::null}}

java::call oracle.owb.jexpert.ActionTable displayTable "Search Results" "Object matches" $rowheader $idref $displaydata $buttons


In Summary

These are sample extensions that are supplied via the owb/lib/ext directory in the OWB client and are useful for providing controls for some fairly common UI actions.

The jexpert.jar file is included in the OWB 10.2 release under owb/lib/ext, so you will be up and running. In 11g, it was omitted (a bug) but you can download and copy it to owb/lib/ext from here.

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.