oracle forms 6i - traning

103
Custom Forms Basics

Upload: nishit

Post on 20-Nov-2015

347 views

Category:

Documents


18 download

DESCRIPTION

oracle foms 6i

TRANSCRIPT

  • Custom Forms Basics

  • Forms Basics

    Topics Covered: 1. Various Forms Component. 2. Application Structure. 3. Template Form. 4. Custom Library. 5. Form Registration and Execution.

  • Forms Basic

    Module Libraries Triggers Windows Canvases Data Blocks Layout Additional Code

  • Module

    Module Change the name of TEMPLATE.fmb Libraries Module name must match file name Triggers Property class = Module Windows Set First Navigation Block Canvases Data Blocks Layout Addl Code

  • Libraries

    Module Libraries Core Triggers Application Specific Windows Canvases Data Blocks Layout Addl Code

  • Libraries Core Download from $AU_TOP/resource Set FORMS60_PATH on desktop to location of local libraries

    APPCORE.pll Application Standards, toolbar VERT.pll Specific industry features GLOBE.pll Global or regional features JA.pll Asia/Pacific features JE.pll Europe/Middle East/Africa features JL.pll Latin America Code CUSTOM.pll Customizations of standard forms FNDSQF.pll Flexfields, Profiles, Currency, Concurrent Request Submission, Record History, Message Dictionary APPDAYPK.pll Calendar APPFLDR.pll Packages for Folder Blocks

  • Libraries Application Specific Additional libraries attached to TEMPLATE.fmb All libraries are available in $AU_TOP/resource

    FV.pll Federal Financials HRKPI.pll Human Resources Knowledge Provider GHR.pll Global Human Resources GMS.pll Encumbrances IGILUTIL.pll International Public Sector IGILUTIL2.pll International Public Sector PSAC.pll Public Sector Applications PQH_GEN.pll Public Sector Human Resources PSA.pll Public Sector Applications PSB.pll Public Sector Budgeting OPM.pll Process Manufacturing APPCORE2.pll Application standards (for CUSTOM.pll)

  • Triggers

    Module Libraries Required Triggers Optional Windows Canvases Data Blocks Layout Addl Code

  • Triggers Required PRE-FORM must be modified Revision, Date, Author Template Form change to your form name BLOCKNAME change to the first block FIRST_WINDOW change to the first window

  • Optional Block or Item Level Triggers

    WHEN-NEW-RECORD-INSTANCE WHEN-NEW-BLOCK-INSTANCE WHEN-NEW-ITEM-INSTANCE POST-QUERY KEY-DUPREC KEY-MENU KEY-LISTVAL QUERY-FIND ACCEPT ON-ERROR

  • Window

    Module Libraries Triggers Windows Modal Canvases Non-Modal Data Blocks Layout Addl Code

  • Modal Windows

    Property class = WINDOW_DIALOG Center window using APP_WINDOW.SET_WINDOW_POSITION Explicitly write code to close the window Code OK and Cancel buttons in advance Use dialog blocks with property class = BLOCK_DIALOG Disable key triggers

  • Non-Modal Windows

    Property class = WINDOW Each window should contain one logical entity Do not attach scroll bars to windows attach to blocks Size between 2x2 and 7.8w x 5.0h Size only as large as necessary No text on top and bottom lines Blank left and right edge character cell except for boundary lines Unique title for each window in a form Dont use only singular/plural forms on window titles Dont change the word order on window titles Dont pad window titles with spaces

  • Canvases

    Module Libraries Triggers Windows Canvases Basics Data Blocks Ruler Layout Addl Code

  • Canvas Ruler

    Ruler Settings

    Character cell height = .25 Character cell width = .1 Turn snap to grid on in the View drop down

  • Data Blocks

    Module Libraries Triggers Windows Canvases Data Blocks Basics Layout Items Addl Code

  • Data Blocks Basics All blocks for a logical entity should be in one window Exceptions

    Information not perceived as attributes of the logical entity Fields not frequently needed

    Use tabs or alternating regions to avoid horizontal scrolling For multi-record blocks always add a scroll bar and current record indicator

  • Data Block Items Enable the calendar for every date field

    Use ENABLE_LIST_LAMP LOV Call calendar_show from KEY-LISTVAL trigger

    Control valid dates Check boxes always have a default value Maximum size of items = database column size Validate items immediately when possible LOVs

    LOVs should only show valid rows Validate from List = Yes for items with LOVs Base LOVs on views to allow sharing The title in the first item of the LOV should match the prompt

    of the field calling the LOV

  • Layout

    Module Libraries Triggers Windows Canvases Data Blocks Region Layout Tabs Addl Code Items

  • Layout Regions

    1.Coordination 2.Check Box

    Coordination Check Box

    Scroll Bar

    Current Record Indicator

    Region Frame

  • Layout Tabs Tab Pages

  • Layout Items Items

    Leftmost button in the window should be the default unless it is a help button

    Allow 30% additional text space for language translation Set alignment to start

    Tabbed regions One character space between fixed and alternating regions Place coordination check box outside the tabbed region

    Navigation: Left to right, top to bottom

  • Additional Code

    Module Libraries Triggers Windows Canvases Data Blocks Layout Additional Code Use program units!

  • Additional Code program units Do not base code on a translated field use the hidden value

    Use who fields and update them!

    If more than one line of code is required, call a program unit, otherwise, code directly in the trigger

  • Overview

  • Application Directory Structure

    Create a directory tree to store your application files. The location of subdirectories will depend on the configuration

    Application Directory Structure APPL_TOP

    Oracle Applications top directory

    AU_TOP

  • TOP Directories

    Oracle Applications top directory

    resource Contains PL/SQL libraries used with Oracle Forms, which must be copied to AU_TOP for forms generation Ex. AU_TOP/resource/ appcore.pll

    forms/[LANGUAGE]

    The FORMS directory contains .fmx files (and .fmb files) under language subdirectories. Ex. forms/US/ Template.fmb

  • Overview

  • Template.fmb The TEMPLATE form includes many referenced blocks, canvases, LOV, parameters, windows and other objects. Objects such as program units and triggers are built directly into TEMPLATE.

    Starting your form with TEMPLATE is the only way to ensure you get the following: Applications property classes and visual attributes Toolbar Menu Calendar Required form-level triggers Required procedures Applications color palette Required parameters Required LOVs and record groups Objects in APPSTAND appear as referenced objects.

    TEMPLATE also contains sample blocks and a sample window

  • Getting Started TEMPLATE.fmb Download from $AU_TOP/forms/US and rename Provides standardized sample objects and references Platform independent

    Reference to object in APPSTAND

    *Referenced Objects are identified by the red arrow in the lower left corner

  • Template form

    We are required to changes at 4 places.

    1. Pre-Form Trigger. 2. When-New-Form-Instance Trigger 3. APP_CUSTOM library. 4. Delete Default DATA BLOCK ,CANVAS and WINDOW

  • Template form

    Pre Form Trigger:

    FND_STANDARD.FORM_INFO('$Revision: 115.12 $', 'Template Form', 'FND', '$Date: 2003/12/19 11:02 $', '$Author: appldev $'); app_standard.event ('PRE-FORM'); app_window.set_window_position('BLOCKNAME', 'FIRST_WINDOW');

  • Template form

    When New Form Instance:

    FDRCSID('$Header: TEMPLATE.fmb 115.12 2003/12/19 11:02 mzasowsk ship $'); APP_STANDARD.EVENT('WHEN-NEW-FORM-INSTANCE');

  • Template form

    APP_CUSTOM.Close_window Procedure

    if (wnd = '') then app_window.close_first_window;

  • Template form

  • CUSTOM Library

    The CUSTOM library allows extension of Oracle Applications without modification of Oracle Applications code. After you write code in the CUSTOM procedures, compile and generate the library using Oracle Forms. Then place this library into $AU_TOP/resource directory (or platform equivalent). Subsequent invocations of Oracle Applications will then run this new code. Attaching Other Libraries to the CUSTOM Library- APPCORE2.pll which contains the following package APP_ITEM_PROPERTY2 APP_DATE2 APP_SPECIAL2

  • CUSTOM Library

    PACKAGE custom IS

    function zoom_available return BOOLEAN; function style(event_name varchar2) return integer; procedure event(event_name varchar2); before constant integer := 1; after constant integer := 2; override constant integer := 3; standard constant integer := 4;

    END custom;

  • CUSTOM Library

    Function Zoom Available: --

    This function allows you to specify if zooms exist for the current context. If zooms are available for this block, then return TRUE; else return FALSE. This routine is called on a per-block basis within every Applications form from the WHEN-NEW-BLOCK-INSTANCE trigger. Therefore, any code that will enable Zoom must test the current form and block from which the call is being made.

    By default this routine must return FALSE.

  • CUSTOM Library

    function style (event_name varchar2) return integer;

    This function allows you to determine the execution style for some product-specific events. You can choose to have your code execute before, after, or in place of the code provided in Oracle Applications. See the Applications Technical Reference manuals for a list of events that are available through this interface.

    Any event that returns a style other than custom.standard must have corresponding code in custom.event which will be executed at the time specified.

    The following package variables should be used as return values: 1. custom.before 2. custom.after 3. custom.override 4. custom.standard

    By default this routine must return custom.standard

  • CUSTOM Library

    procedure event(event_name varchar2);

    This procedure allows you to execute your code at specific events including: ZOOM WHEN-NEW-FORM-INSTANCE WHEN-NEW-BLOCK-INSTANCE WHEN-NEW-RECORD-INSTANCE WHEN-NEW-ITEM-INSTANCE WHEN-VALIDATE-RECORD Additionally, product-specific events will be passed via this interface (see the Applications Technical Reference manuals for a list of events that are available).

    By default this routine must perform 'null;'.

  • PACKAGE BODY CUSTOM IS

    function zoom_available return boolean is

    form_name varchar2(30) := name_in('system.current_form'); block_name varchar2(30) := name_in('system.cursor_block'); item_name varchar2(100) := name_in('system.current_item');

    BEGIN IF (form_name = 'OKSAUDET' and (block_name = 'OKS_HEADER' and item_name='OKSAUDET.OKS_HEADER.CUST_PO_NUMBER) THEN

    return TRUE; END IF; return FALSE;

    END zoom_available;

    CUSTOM Library

  • Zoom Function

  • CUSTOM Library PROCEDURE event(event_name VARCHAR2) IS

    form_name VARCHAR2(30) := name_in('system.current_form'); block_name VARCHAR2(30) := name_in('system.cursor_block'); item_name VARCHAR2(30) := name_in('system.current_item');

    BEGIN

    /*--- Added by to activate special25 with caption 'Cascading Header Billing'-Dec-2008--- */

    IF (form_name = 'OKSAUDET' AND event_name IN ('WHEN-NEW-ITEM-INSTANCE','WHEN-NEW-BLOCK-INSTANCE')) THEN app_special2.instantiate('SPECIAL26','Cascading Header Billing');

    IF (NAME_IN('SYSTEM.CURRENT_BLOCK') = 'OKS_HEADER' )THEN app_special2.enable('SPECIAL26',PROPERTY_ON); ELSE app_special2.enable('SPECIAL26',PROPERTY_OFF);

    END IF;

    END IF;

    IF (form_name = 'OKSAUDET' AND block_name ='OKS_HEADER' and event_name = 'SPECIAL26') THEN fnd_function.execute(FUNCTION_NAME=>'ECBILSTS', OPEN_FLAG =>'Y', SESSION_FLAG =>'Y', OTHER_PARAMS=>'ECBILSTS_CHR_ID="'||Name_In('OKS_HEADER.ID')||'"' ); END IF;

  • CUSTOM Library

  • CUSTOM Library

  • Form Registration

    Forms Registration Steps:

  • Form Registration

    Register the Function

    Navigation: Go to Application Developer Application Forms

  • Form Registration

    2. Register the Function:

    Navigation: Go to Application Developer->Application Function

  • Form Registration

    3. Select Form registered in step 1 Navigation: Go to Forms tab-Select form

  • Form Registration

    4. Select Type = Form Navigation: Properties Select Form

  • Form Registration

    5. Attach the function with the Menu

    Navigation: Application Developer Application Menu

  • Execution

    Execution:

    FTP file to the specified CUSTOM TOP, by using FTO Tool.

    For library file it is $EMCAU_TOP/resource/US For forms it is $EMCAU_TOP/forms/US

    After FTP, generate .plx or .fmx file in the specific CUSTOM TOP

  • Execution

    Script used to Generate .plx

    f60gen module=/apps/crd01/applmgr/1154/emcau/1.0/resource/US/ETERMNOT.pll userid=apps/d11cache output_file=/apps/crd01/applmgr/1154/emcau/1.0/resource/US/ETERMNOT.plx module_type=library batch=no compile_all=special

  • Execution

    Script to Generate .fmb

    f60gen module=/apps/crd02/applmgr/1154/emcau/1.0/forms/US/ECBILSTS.fmb userid=apps/caps output_file=/apps/crd02/applmgr/1154/emcoks/1.0/forms/US/ECBILSTS.fmx module_type=form batch=no compile_all=special

  • Workflow Fundamentals

    By Priyanka Pareek

  • General Technology Overview

    Why Oracle Workflow?

    In a system of an enterprise we need to have hierarchical approval system of processes. Sometimes for a particular activity we need to inform higher authority via notifications.

    These can be done through Oracle Workflow technology.

  • Workflow Fundamentals

    What is Oracle Workflow?

    1. Bunch of Pl/SQL Package procedures and functions

    2. Takes off only when some event triggers it

    3. Series of Activities strung together

    4. Each activity can invoke next activity

  • Workflow Fundamentals

    Alternative Objects

    i. Alert

    ii. Procedures

    iii. Etc.

  • Workflow Fundamentals

    If an alert or a Package procedure can work same as Workflow, then

    WHY WORKFLOW

    ?

  • Workflow Fundamentals

    Automates and streamlines the business processes within enterprises. Workflow Controls the execution of predefined series of activities Sophisticated branching logic and modeling construct Routes Information to various users based on certain rules. User Friendly Visual Display Can identify , View and expedite the stuck node within the complete process. Most important

    Captures manual responses and accordingly acts on it.

  • Workflow Fundamentals

    Agenda

    1. Introduction to Oracle Workflow Builder 2. Creating Workflow Manually/Quick Start Wizard 3. Naming Conventions 4. Tree Structure 5. Other Objects frequently used in WFs 6. Technical Overview 7. Monitoring WF 8. Creating Roles at Runtime 9. Queries

  • Workflow Fundamentals

    Introduction to Oracle Workflow Builder:

    The Workflow Builder graphical tool is used to create new or modify existing workflow activities. The various actions required in a custom workflow process must be dragged and dropped to the process window to create a workflow diagram. Once developed, this process can be saved directly to the database.

  • Workflow Fundamentals

    Lets Get Started

    Workflow Can be Created using Two Methods 1. Manually 2. Using Quick Wizard

  • Workflow Fundamentals

    File New

  • Workflow Fundamentals

    Quick Start Wizard

  • Workflow Fundamentals

    Creating WF from Quick Start Wizard (adds start/stop nodes)

    1. Adds start/stop nodes 2. Copies in Standard Item Type (WFSTD) 3. Add activities (function, notification, process) 4. Define attributes, messages, timeouts 5. Configure Standard Activities

  • Workflow Fundamentals There are two parts of Workflow Builder

    Object Navigator Process Diagram

  • Workflow Fundamentals Naming conventions.. Internal Name The internal name of an object is the name that will always be referred to within the WF. This must be unique within the item type Uppercase, No colons, leading / trailing spaces Name used by APIs, PL/SQL to identify item type Not Updatable

    Display Name : Any meaningful name of the object within the WF, Which is visible to the user, with size up to max 30 chars Description : Details of the current Object , with size up to max 80

  • Workflow Fundamentals

    MENU

  • Workflow Fundamentals

    MENU

  • Workflow Fundamentals

    MENU

  • Workflow Fundamentals

    Navigator Tree Structure

    1. Item Type 2. Processes 3. Attributes 4. Notifications 5. Functions 6. Events 7. Messages 8. Lookup types

  • Workflow Fundamentals

    Item Type: Grouping of a set of workflow processes and its objects.

    Processes Diagram of all workflow activities and the relationship/flow between each activity.

    Attributes Components that form the item type (i.e. all data that will be needed throughout the process).

    Stored in table WF_ITEM_ATTRIBUTES

  • Workflow Fundamentals

    Notifications Activities that send messages within the workflow process.

    Functions PL/SQL stored procedures that are either standard Oracle APIs or custom procedures. These procedures will determine the steps taken by the workflow based on user intervention.

    Events Business event that process receives, raises, or sends

    Messages Actual message text sent by the notification activities to the end users.

  • Workflow Fundamentals

    Lookup Types List of values provided within the messages to enable the user to accept/reject a specified action. If some value has to be fetched at runtime we use lookup set values attribute.

    Some Standard Lookup Types:

  • Workflow Fundamentals

    Several other Objects used frequently in WFs:

    PERSISTANCE TYPE

    ACCESS LEVEL

    PROTECTION LEVEL

    RUNNABLE

    SELECTOR

    ROLE

  • Workflow Fundamentals

    Persistence Type

    Oracle WF allows the developer to determine how long each WF should remain in the database after they complete before they become eligible for purging. The different persistence types are

    Permanent The standard API will never remove the WF

    Temporary Remain ineligible for purging until n complete days have passed

    Synchronous Do not persist the WF in the database, so no run-time data is

    stored

  • Workflow Fundamentals

    Access Level Each user of Oracle Workflow operates the system at a certain access level according to the range of levels listed Below. 09 Oracle Workflow 1019 Oracle Application Object Library 2099 Oracle Application Development 100999 Customer organization 1000 Public

    Default access level of 100 You can view your access level as follows: In Oracle Workflow Builder, select About Workflow from the Help menu.

  • Workflow Fundamentals

  • Workflow Fundamentals

    Protection Level Whenever you create a workflow object in Oracle Workflow Builder, you have the option of protecting the object at a certain level. An objects protection level controls whether other users can modify the object based on their access levels.

    To Set the Level for an Object 1. Select the Access tab of the property page. 2. In the Options region, use the Preserve Customizations and Lock at this Access Level check boxes to define the access levels that can modify this object. The options that you check in this region directly affect the values that appear in the Levels region.

  • Workflow Fundamentals

    Protection Level

  • Workflow Fundamentals

    Preserve Customizations

    Lock at this Access Level

    Level Allowed to modify the object

    Uncheck

    Uncheck

    Object may be updated by any access level (01000).

    Check Uncheck

    Object may be updated by access Level from (1001000).

    Uncheck

    Check Object may only be updated by access levels from 0100.

    Check Check

    Object cannot be updated by any access level other than 100.

  • Workflow Fundamentals

    RUNNABLE Check Runnable so that the process that this activity represents can be initiated as a toplevel process and run independently. If your process activity represents a sub process that should only be executed if it is called from a higher level process, then uncheck Runnable

  • Workflow Fundamentals

    SELECTOR

    If your item type has or will have more than one runnable process activity associated with it, define a PL/SQL function that determines which process activity to run in a particular situation.

    For example, you may have two different requisition approval process activities associated with the same item type. The process that Oracle Workflow executes may vary depending on how and where the requisition originates. Your selector function would determine which process would be appropriate in any given situation.

  • Workflow Fundamentals

    SELECTOR

  • Workflow Fundamentals

    ROLE

    To capture manual responses, we need to redirect the Notifications to a user of a group of user.

    Workflow Provides both kind of PERFORMERS

    USER : A Oracle Application USER with a valid login and password.

    ROLE : If we need to shoot a notification to a user, create a responsibility and attach it to user. A responsibility is treated as a ROLE in Workflow.

  • Workflow Fundamentals

    Validation Tool Checks the process has one or more start / end nodes. Notifications that are being sent must have a performer specified.

    Limitation: Validation tools at no stage check whether all the activities in the process connect! According to tool, the process which you have created is valid, even though there is no link b/w the activities (Start / End). It does not check for the code attached with activity, whether code is valid and installed in the database.

  • Workflow Fundamentals

    Some Imp points The process must contain a start activity. In order to mark the activity as a true start node, open the Node tab and select start from drop down list for Start / End, instead of the normal value, which is used as default. Process must contain at least one End activity. The start node cannot have any in transitions and End node cannot have outbound transitions.

  • Workflow Fundamentals

    The moment we are done with our development, try to save it.

    Save to PC file system (.wft)

    Save to database once PL/SQL procedures finished and errors corrected

  • Workflow Fundamentals

    Saving the Workflow. In case there are some errors in the Workflow, a text box immediately pops up with all the warnings and Errors.

    Click + to expand message to see real error

    Some can be corrected at this point

    Some require Technical side to finish work

    Press Save button to save work anyway

  • Workflow Fundamentals

    Difference between Warnings and Errors.

    The Workflow can be saved and executed with some warnings on it, But the Workflow cant neither be saved nor executed properly with a single error on it.

  • Workflow Fundamentals

    Launch Workflow Technical Overview Using PL /SQL WF_ENGINE.CREATEPROCESS & WF_ENGINE.STARTPROCESS WF_ENGINE.LAUNCHPROCESS

    CREATEPROCESS procedure CreateProcess(itemtype in varchar2, itemkey in varchar2, process in varchar2 Default , user_key in varchar2 Default , owner_role in varchar2 Default )

  • Workflow Fundamentals

    ITEMTYPE The internal name for the item type.

    ITEMKEY The string uniquely identifies the item within an item type.

    Process A valid root process for this item type (or null to use the item's selector function)

    User Key Is optional field, which is displayed in WF monitor when the users search for their processes.

    Process Owner Is optional field, which should be set whenever you know the user who is initiating the process.

  • Workflow Fundamentals

    PROCEDURE TEST_FUNCTION ( itemtype IN VARCHAR2, itemkey IN VARCHAR2, actid IN NUMBER, funcmode IN VARCHAR2, resultout IN OUT VARCHAR2 ) ITEMTYPE The internal name for the item type. ITEMKEY The string uniquely identifies the item within an item type. ACTID The ID number of the activity from which this procedure is called. FUNCMODE The execution mode of the activity. RESULTOUT The result that is returned when the procedure completes.

  • Workflow Fundamentals FUNCMODE :-The execution mode of the activity. If the activity is a function activity, the mode is either RUN or CANCEL. If the activity is a notification activity, with a post-notification function, then the mode can be RESPOND, FORWARD, TRANSFER, TIMEOUT, or RUN. Other execution modes may be added in the future.

    procedure SetItemAttrText (itemtype in varchar2, itemkey in varchar2, aname in varchar2, avalue in varchar2); Function GetItemAttrText (itemtype in varchar2, itemkey in varchar2, aname in varchar2) return varchar2;

  • Monitoring Workflow Errors and Debugging

    There are two ways of monitoring a workflow.

    During developing a workflow and during testing we sometime check where the workflow has stopped. How can view it?

    From front end From back end

  • Workflow Fundamentals

    Monitoring Workflow Errors and Debugging

    From back end There are tables in back end where one can view the status of a particular workflow. Those are as follows:

    WF_ITEMS is the runtime table for workflow processes. Each row defines one work item within the system

    WF_ITEM_TYPES table defines an item that is transitioning through a workflow process

    WF_MESSAGES contains the definitions of messages which may be sent out as notifications

  • WF_NOTIFICATIONS holds the runtime information about a specific instance of a sent message.

    WF_COMMENTS This is a table for notification comments

    WF_ITEM_ATTRIBUTE_VALUES

    WF_ITEM_ACTIVITY_STATUSES_V shows the status of running workflow.

    WF_ITEM_ACTIVITIES_HISTORY_V contains history information of a workflow.

  • Workflow Fundamentals

    From Front End: We can view the in green transition, which means things are going good. Here process is stuck at Notify Approver marked in Red circle. But this is a sub process. So if we now open this Subprocess, we can see that right now we are waiting for the notifications respond. In 2nd monitor diagram we also have some buttons; through these we can check the details about WF. We also have WF Admin resp. where we can manipulates and enter certain values to precede the WF further.

    Attached is the Navigation to see the workflow status

  • Workflow Fundamentals

    WF Monitor:

  • Sending Notification to Multiple Person:

    To send FYI type notification to multiple person using a logical loop results in last person in the loop receiving the notification.

    Cause: Notification of the previous person goes to CLOSED State once the next person in the loop gets the notification.

    Solution: Create an Ad-Hoc Role and attach users to that adhoc role.

    It is preferable to create new adhoc role for new requirement.

  • How to create adhoc-role: DECLARE v_role varchar2(100):=ROLE_NAME'; v_role_display varchar2(100):=Role Display Name'; BEGIN wf_directory.CreateAdHocRole(v_role, v_role_display ); COMMIT; END; Adding User to Ad-Hoc Role BEGIN wf_directory.AddUsersToAdHocRole(ROLE_NAME, USER_NAME ); COMMIT; END; Deleting Users from Ad-Hoc Role BEGIN wf_directory.RemoveUsersFromAdHocRole(ROLE_NAME, USER_NAME ); COMMIT; END;

    #Note: Keeping USER_NAME as Null will delete all the users from that particular Ad-Hoc Role.

  • Workflow Fundamentals