A script-enabled browser is required for this page to function properly.

Invoking JavaBean Methods

The enhanced JavaBean support provides a Built-in that can invoke JavaBean methods. There are several versions of the Fbean.Invoke Built-in.

One version of Invoke can call JavaBean methods that do not require arguments.

Other versions of Invoke can pass arguments to JavaBean methods:

Within each of these versions of FBean.Invoke, there are formats that are defined as procedures for calling JavaBean methods that return void, and formats defined as PL/SQL functions which return a specific data type for JavaBean method calls that have return values.

Syntax for FBean.Invoke

Versions for calling JavaBean methods without arguments


FBEAN.INVOKE ( 
      ITEM_NAME       IN   VARCHAR2, 
      ITEM_INSTANCE   IN   PLS_INTEGER, 
      METHOD_NAME     IN   VARCHAR2);

FBEAN.INVOKE (
      ITEM_ID         IN   ITEM, 
      ITEM_INSTANCE   IN   PLS_INTEGER, 
      METHOD_NAME     IN   VARCHAR2);

FBEAN.INVOKE_CHAR ( 
      ITEM_NAME       IN   VARCHAR2,
      ITEM_INSTANCE   IN   PLS_INTEGER, 
      METHOD_NAME     IN   VARCHAR2) return VARCHAR2;

FBEAN.INVOKE_CHAR (
      ITEM_ID         IN   ITEM, 
      ITEM_INSTANCE   IN   PLS_INTEGER, 
      METHOD_NAME     IN   VARCHAR2) return VARCHAR2;

FBEAN.INVOKE_NUM ( 
      ITEM_NAME       IN   VARCHAR2, 
      ITEM_INSTANCE   IN   PLS_INTEGER, 
      METHOD_NAME     IN   VARCHAR2)  return NUMBER;

FBEAN.INVOKE_NUM ( 
      ITEM_ID         IN   ITEM, 
      ITEM_INSTANCE   IN   PLS_INTEGER, 
      METHOD_NAME     IN   VARCHAR2)   return NUMBER;

FBEAN.INVOKE_BOOL ( 
      ITEM_NAME       IN   VARCHAR2, 
      ITEM_INSTANCE   IN   PLS_INTEGER, 
      METHOD_NAME     IN   VARCHAR2)  return BOOLEAN;

FBEAN.INVOKE_BOOL ( 
      ITEM_ID        IN    ITEM, 
      ITEM_INSTANCE  IN    PLS_INTEGER, 
      METHOD_NAME    IN    VARCHAR2)  return BOOLEAN;

Versions for calling JavaBean methods that use a comma-delimited string for passing method arguments


FBEAN.INVOKE ( 
      ITEM_NAME        IN    VARCHAR2, 
      ITEM_INSTANCE    IN    PLS_INTEGER, 
      METHOD_NAME      IN    VARCHAR2, 
      METHOD_ARGUMENTS IN    VARCHAR2);

FBEAN.INVOKE ( 
      ITEM_ID          IN    ITEM, 
      ITEM_INSTANCE    IN    PLS_INTEGER, 
      METHOD_NAME      IN    VARCHAR2, 
      METHOD_ARGUMENTS IN    VARCHAR2);

FBEAN.INVOKE_CHAR ( 
      ITEM_NAME        IN    VARCHAR2,
      ITEM_INSTANCE    IN    PLS_INTEGER, 
      METHOD_NAME      IN    VARCHAR2, 
      METHOD_ARGUMENTS IN    VARCHAR2) return VARCHAR2;

FBEAN.INVOKE_CHAR ( 
      ITEM_ID          IN   ITEM, 
      ITEM_INSTANCE    IN   PLS_INTEGER, 
      METHOD_NAME      IN   VARCHAR2, 
      METHOD_ARGUMENTS IN   VARCHAR2) return VARCHAR2;

FBEAN.INVOKE_NUM ( 
      ITEM_NAME        IN   VARCHAR2, 
      ITEM_INSTANCE    IN   PLS_INTEGER, 
      METHOD_NAME      IN   VARCHAR2, 
      METHOD_ARGUMENTS IN   VARCHAR2) return NUMBER;

FBEAN.INVOKE_NUM ( 
      ITEM_ID          IN   ITEM, 
      ITEM_INSTANCE    IN   PLS_INTEGER, 
      METHOD_NAME      IN   VARCHAR2, 
      METHOD_ARGUMENTS IN   VARCHAR2) return NUMBER;

FBEAN.INVOKE_BOOL ( 
      ITEM_NAME        IN   VARCHAR2, 
      ITEM_INSTANCE    IN   PLS_INTEGER, 
      METHOD_NAME      IN   VARCHAR2, 
      METHOD_ARGUMENTS IN   VARCHAR2) return BOOLEAN;

FBEAN.INVOKE_BOOL ( 
      ITEM_ID          IN   ITEM,
      ITEM_INSTANCE    IN   PLS_INTEGER, 
      METHOD_NAME      IN   VARCHAR2, 
      METHOD_ARGUMENTS IN   VARCHAR2) return BOOLEAN;

Versions of Invoke that use an FBEAN.ARGLIST for the method arguments


FBEAN.INVOKE ( 
      ITEM_NAME        IN   VARCHAR2, 
      ITEM_INSTANCE    IN   PLS_INTEGER, 
      METHOD_NAME      IN   VARCHAR2, 
      METHOD_ARGUMENTS IN   FBEAN.ARGLIST);

FBEAN.INVOKE ( 
      ITEM_ID          IN   ITEM, 
      ITEM_INSTANCE    IN   PLS_INTEGER, 
      METHOD_NAME      IN   VARCHAR2, 
      METHOD_ARGUMENTS IN   FBEAN.ARGLIST);

FBEAN.INVOKE_CHAR ( 
      ITEM_NAME        IN   VARCHAR2, 
      ITEM_INSTANCE    IN   PLS_INTEGER, 
      METHOD_NAME      IN   VARCHAR2, 
      METHOD_ARGUMENTS IN   FBEAN.ARGLIST) return VARCHAR2;

FBEAN.INVOKE_CHAR ( 
      ITEM_ID          IN   ITEM, 
      ITEM_INSTANCE    IN   PLS_INTEGER, 
      METHOD_NAME &    IN   VARCHAR2, 
      METHOD_ARGUMENTS IN   FBEAN.ARGLIST) return VARCHAR2;

FBEAN.INVOKE_NUM ( 
      ITEM_NAME        IN   VARCHAR2, 
      ITEM_INSTANCE    IN   PLS_INTEGER, 
      METHOD_NAME      IN   VARCHAR2, 
      METHOD_ARGUMENTS IN   FBEAN.ARGLIST) return NUMBER;

FBEAN.INVOKE_NUM ( 
      ITEM_ID          IN   ITEM, 
      ITEM_INSTANCE    IN   PLS_INTEGER, 
      METHOD_NAME      IN   VARCHAR2, 
      METHOD_ARGUMENTS IN   FBEAN.ARGLIST) return NUMBER;

FBEAN.INVOKE_BOOL ( 
      ITEM_NAME        IN   VARCHAR2, 
      ITEM_INSTANCE    IN   PLS_INTEGER, 
      METHOD_NAME      IN   VARCHAR2, 
      METHOD_ARGUMENTS IN   FBEAN.ARGLIST) return BOOLEAN;

FBEAN.INVOKE_BOOL ( 
      ITEM_ID          IN   ITEM, 
      ITEM_INSTANCE    IN   PLS_INTEGER, 
      METHOD_NAME      IN   VARCHAR2, 
      METHOD_ARGUMENTS IN   FBEAN.ARGLIST) return BOOLEAN;

where:

Parameter Description
ITEM_NAME the name of the Bean Area
ITEM_ID the name of the Bean Area as an ITEM data type. You can use the Forms FIND_ITEM Built-in to get this value.
ITEM_INSTANCE

the instance of the item to which the JavaBean method should be applied. This argument is applicable where the Bean Area is part of a multi-row block and more than one instance of the Bean Area is displayed.

To apply the JavaBean method to all instances of a multi-row block, use the value ALL_ROWS or FBean.ALL_ROWS.

METHOD_NAME the name of the JavaBean method
METHOD_ARGUMENTS

for methods taking a comma-delimited string: a comma-delimited list of arguments or a string representing the comma delimited list.

for methods taking an argument list: the name of the argument list created with FBEAN.CREATE_ARGLIST

Using the FBean.Invoke Built-in

This section contains examples of how to use FBean.Invoke to call JavaBean methods.

Calling JavaBean Methods that do not use Arguments

Here is a simple example of calling methods on the Juggler demo JavaBean to switch juggling off if it is on and visa-versa.. The JavaBean methods used in this example do not take arguments. The isJuggling() method determines the state; the startJuggling() and stopJuggling() methods switch juggling on and off respectively.


declare 
   JuggleStopped varchar2(6); 
 begin 
   -- First determine the state of the Bean 
   JuggleStopped := FBEAN.INVOKE_BOOL('MyBeanArea',1,'isJuggling'); 
   -- Now branch on that state 
   if upper(JuggleStopped) = 'FALSE' then  
   FBEAN.INVOKE('MyBeanArea',1,'stopJuggling'); 
   else 
   FBEAN.INVOKE('MyBeanArea',1,'startJuggling');  
   end if; 
 end;

Calling JavaBean Methods that use Arguments

Here is an example of a method called addition(int x, int y) in a JavaBean which takes two arguments to add together and returns a number. The FBEAN.INVOKE_NUM Built-in will be used to access this method.

Calling Arguments as a Delimited String

In this example, the method will be called using a delimited string argument list.


Declare
   result number; 
  begin 
   -- Note how a string value is passed containing the two number 
   -- Values 99 & 1 separated by a comma. 
   result := FBEAN.INVOKE_NUM('adderbean',1,'addition','99,1'); 
  end;

Notice that the delimited string used in FBEAN.INVOKE_NUM can also be expressed as:


  ...
  method_args := '99, 1'
  result := FBEAN.INVOKE_NUM('adderbean',1,'addition','method_args');
  ...  

Calling Arguments as an Argument List

Here is the same example as above, but this time, the arguments are stored in an argument list.


 Declare 
   hArgs FBEAN.ARGLIST; 
   result number; 
 begin 
   -- initialize the Arglist 
   hArgs := FBEAN.CREATE_ARGLIST; 
   -- Add the two arguments in the correct order 
   FBEAN.ADD_ARG(hArgs,99); 
   FBEAN.ADD_ARG(hArgs,1); 
   --Invoke the method passing the Arglist 
   result := FBEAN.INVOKE_NUM('adderbean',1,'addition',hArgs); 
 end; 

Accessing JavaBean Methods

Defining Method Arguments as a Delimited String

Defining Method Arguments as a List

Working with Overloaded Methods