Download the Standard Workflow for creating a new workflow item type:

To download the workflow file we can download using wfload or from Oracle Workflow Builder.

Navigation: File –> Open –> Database –> Please give Apps user credentials. It usually takes time to load all the workflows.

 

Select Standard from the list of workflows and press OK button.

When the WFSTD is Loaded then save on your desktop as STANDARD.wft:

Right click on Standard and create a new Item Type

The Item Type Internal name can have at the max of 8 Characters:

There are 3 types of Persistence’s as Temporary, Permanent and Synchronization.

The access levels are important to modify the workflow and can be set at workflow builder help.

Click OK

Now save the Workflow file as XAOATEST.wft on your local desktop:

Once a new Item Type is created then a new process needs to be created where the logic needs to go in:

We need to create a new Runnable Process so that we can call it from PLSQL/Form/OAF/Java.

Under a Process there can be any number of sub process depending upon the complexity of the workflow logic that needs to be implemented.

Once the Process is created then we need to design the Process:

To Design any Process in Workflow it should start with One start Function and we get it from WFSTD. Just we need to drag and drop the start and end functions from theStandard Functions:

Even when we import the Start function go to its properties and we need to mention it should be a start:

Note: Any Process can have only one Start but can have any number of ends depending upon the Business logic’s complexity.

 

Similarly change the properties of the end function:

 

Click on OK button.

 

Now we need to create a Custom Function that has the business logic. You can have the Function call your plsql function or Java Class or any external application. We can mention the PLSQL Function Name in the Function Name field in the properties of the Function.

We can mention the result type if any Result is returned from the plsql Function:

Click OK

 

Once the function is created just drag and drop the function between START and END Functions. Once the Function is placed just by using right click of the mouse draw the Flow how the process to be. Always The Process would be starting from Start and No Functions can be in the Process without coupling to another in the flow. Always the flow should end using and END function.

 

Now Verify the workflow and save in the data base or the (desktop and upload using wfload).

 

Once the workflow is saved in the data base which usually takes time we can test it using below queries :

 

Select * from wf_item_types where name=’XOATEST’

 

Select * from wf_process_activities where process_item_type=’XOATEST’

 

The data in WF_PROCESS_ACTIVITIES table explains the complete details of the workflow item type. Like how many Process, Functions, etc. with its versions. PL/SQL code for this workflow: PLSQL Package used in XAOATEST Workflow:

 

/* Formatted on 2021/02/03 11:32 (Formatter Plus v4.8.8) */

CREATE OR REPLACE PACKAGE xxaoa_test_wf_pkg

AS

PROCEDURE insert_proc (

itemtype    IN              VARCHAR2,

itemkey     IN              VARCHAR2,

actid       IN              NUMBER,

funcmode    IN              VARCHAR2,

resultout   IN OUT NOCOPY   VARCHAR2

);

 

PROCEDURE launch_workflow (

itemtype   IN   VARCHAR2,

itemkey    IN   VARCHAR2,

process    IN   VARCHAR2

);

END xxaoa_test_wf_pkg;

/

 

/* Formatted on 2021/02/03 11:33 (Formatter Plus v4.8.8) */

CREATE OR REPLACE PACKAGE BODY xxaoa_test_wf_pkg

AS

PROCEDURE insert_proc (

itemtype    IN              VARCHAR2,

itemkey     IN              VARCHAR2,

actid       IN              NUMBER,

funcmode    IN              VARCHAR2,

resultout   IN OUT NOCOPY   VARCHAR2

)

AS

BEGIN

INSERT INTO xxaoa_test_wf

VALUES (itemtype, itemkey, actid, funcmode, resultout);

 

resultout := ‘Success’;

EXCEPTION

WHEN OTHERS

THEN

resultout := ‘Error’;

END insert_proc;

 

PROCEDURE launch_workflow (

itemtype   IN   VARCHAR2,

itemkey    IN   VARCHAR2,

process    IN   VARCHAR2

)

AS

BEGIN

wf_engine.threshold := -1;

wf_engine.createprocess (itemtype, itemkey, process);

wf_engine.startprocess (itemtype, itemkey);

EXCEPTION

WHEN OTHERS

THEN

DBMS_OUTPUT.put_line (‘Error at LAUNCH_WORKFLOW: ‘ || SQLERRM);

END launch_workflow;

END xxaoa_test_wf_pkg;

Sample Script to Kickoff or Trigger the workflow:

DECLARE

lvitemtype   VARCHAR2 (80)   := ‘XAOATEST’;

lvuserid     NUMBER          := -1;

lvitemkey    VARCHAR2 (10);

verrormsg    VARCHAR2 (2000);

verrorcode   NUMBER;

BEGIN

lvitemkey := ‘XAOA-01’;                     — This should be unique value

xxaoa_test_wf_pkg.launch_workflow (itemtype      => lvitemtype,

itemkey       => lvitemkey,

process       => ‘AOAMAIN_PROCESS’

);

— Main Runnable process name                                       );

COMMIT;            — Use commit if we need to see the WF Status from Front

EXCEPTION

WHEN OTHERS

THEN

verrorcode := SQLCODE;

verrormsg := SQLERRM (SQLCODE);

raise_application_error (20001, verrormsg);

END;

 

Select * from wf_items where item_type=’XOATEST’

SELECT *    FROM wf_item_activities_history_v   WHERE item_type = ‘XAOATEST’;

Recent Posts

Start typing and press Enter to search