WORKFLOW PROCESS IS NOT WAITING FOR USER INPUT LIKE RE-ASSIGN FUNCTION

I am using Stand alone Workflow 2.6, In my workflow process
which is an Issue tracking system which is working fine. On Enhancement I would like to create my own RE-ASSIGN function which will, Change the ownership of an issue totally to other user.
For this I Created a package(CHANGE_OWNER.CREATE)which will show list of Users and Comment field(Just like Re-Assign).
Here user can pick other user, and add comment,
once submit for that Item key I am updating the workflow notification table so that paritcular issue ownership will be changed.
In my workflow process I created a lookup code called "Change Owner". On click of Change Owner it will call the Function
in workflow process which will call CHANGE_OWNER.CREATE, here
the workflow process supposed to wait and get the User to be
changed. BUT THE PROCESS IS NOT WAITING, IT JUST DISPLAYED THE
SCREEN AND CONTINUED THE WORKFLOW PROCESS. I WANT THE MY
WORKFLOW PROCESS TO BE ACT AS RE-ASSINGN BUTTON WHICH WILL WAIT
FOR THE USER INPUT.
HOW TO DO IT.
Thanks
Bala.

Hi Bala
What enhancements were you adding to the Workflow Reassign/Delegate feature, which included being able to add comments? A good idea is to look for any differences between how workflow implements the reassign feature, and your customization.
Also, make sure you only use the Public documented PL/SQL APIs and do not update the tables directly to ensure no Support or Upgrade Issues.
Cheers
Mark
I am using Stand alone Workflow 2.6, In my workflow process
which is an Issue tracking system which is working fine. On Enhancement I would like to create my own RE-ASSIGN function which will, Change the ownership of an issue totally to other user.
For this I Created a package(CHANGE_OWNER.CREATE)which will show list of Users and Comment field(Just like Re-Assign).
Here user can pick other user, and add comment,
once submit for that Item key I am updating the workflow notification table so that paritcular issue ownership will be changed.
In my workflow process I created a lookup code called "Change Owner". On click of Change Owner it will call the Function
in workflow process which will call CHANGE_OWNER.CREATE, here
the workflow process supposed to wait and get the User to be
changed. BUT THE PROCESS IS NOT WAITING, IT JUST DISPLAYED THE
SCREEN AND CONTINUED THE WORKFLOW PROCESS. I WANT THE MY
WORKFLOW PROCESS TO BE ACT AS RE-ASSINGN BUTTON WHICH WILL WAIT
FOR THE USER INPUT.
HOW TO DO IT.
Thanks
Bala.

Similar Messages

  • Program does not wait for user input

    Hi everyone,
    i am working on a program and there are 2 problems that i can't figure out. Since they are 2 different topics, I will do 2 posts.
    Just to give you some background on the program, it is a program that reads 3 txt files into 4 different arrays. The files contain student names, student ID numbers, number of credits and gpas. the user enters the names of the 3 txt files and then is given a list of options to choose from. I am having problems with option 7.
    The code lists the student information, but it does not stop to request the name of the student from the user. Instead, it prints the system out line requesting the name and then prints all the information for every student in the file. I can't figure out why this is happening. Here is the code for the option:
                    else if (choice == 7)
                            System.out.print("Please enter the student's name: ");
                            student_name= sc.nextLine();
                            for (q= 0; q <= num_students-1; q++)
                                    if (student_name.equalsIgnoreCase(studentname[q]))
                                            System.out.println();
                                            System.out.println("Student's name: " + studentname[q]);
                                            System.out.println(studentname[q] + "'s ID#: " + studentid[q]);
                                            System.out.println(studentname[q] + "'s number of credits: " + credits[q]);
                                            System.out.println(String.format(studentname[q] + "'s gpa: " + "%.2f",gpa[q]));
                                            if (gpa[q] < 2.00)  
                                                    System.out.println(studentname[q] + "'s status: can't graduate");
                                            else if (gpa[q] >= 3.45 && gpa[q] < 3.65)
                                            else if (gpa[q] >= 3.45 && gpa[q] < 3.65)
                                                    System.out.println(studentname[q] + "'s status: cum laude");
                                            else if (gpa[q] >= 3.65 && gpa[q] < 3.85)
                                                    System.out.println(studentname[q] + "'s status: magna");
                                            else if (gpa[q] >= 3.85)
                                                    System.out.println(studentname[q] + "'s status: summa");
                                            else if (gpa[q] >= 2.00 && gpa[q] < 3.45)
                                                    System.out.println(studentname[q] + "'s status: ");
                    System.out.println();
                    System.out.println("1.  List student names");
                    System.out.println("2.  List credits");
                    System.out.println("3.  Show total credits");
                    System.out.println("4.  List gpas");
                    System.out.println("5.  List gpas in ascending order");
                    System.out.println("6.  Show weighted average of gpas");
                    System.out.println("7.  Show information about a given student");
                    System.out.println("8.  Add a new student");
                    System.out.println("9.  Quit");
                    System.out.println();
                    System.out.println();
                    System.out.print("Enter your choice: ");
                    choice= sc.nextInt();
                    System.out.println();
                    // Option 9 quits program
    }          Any help you can give me would be greatly appreciated.

    Ok, I tinkered with the code a bit. Now it will show the info for only one student, however, it is not giving any results. Here is the output I am getting:
    Enter your choice: 7
    Please enter the student's name: mary
    Student's name: null
    null's ID#: null
    null's number of credits: 0
    null's gpa: 0.00
    null's status: can't graduate
    1. List student names
    2. List credits
    3. Show total credits
    4. List gpas
    5. List gpas in ascending order
    6. Show weighted average of gpas
    7. Show information about a given student
    8. Add a new student
    9. Quit
    Here is the updated code:
                    else if (choice == 7)
                            System.out.print("Please enter the student's name: ");
                            student_name= sc.next();
                            for (q= 0; q < num_students; q++)
                                    if (student_name.equalsIgnoreCase(studentname[q]))
                                            System.out.println();
                                            System.out.println("Student's name: " + studentname[q]);
                                            System.out.println(studentname[q] + "'s ID#: " + studentid[q]);
                                            System.out.println(studentname[q] + "'s number of credits: " + credits[q]);
                                            System.out.println(String.format(studentname[q] + "'s gpa: " + "%.2f",gpa[q]));
                                            if (gpa[q] < 2.00)
                                                    System.out.println(studentname[q] + "'s status: can't graduate");
                                            else if (gpa[q] >= 3.45 && gpa[q] < 3.65)
                                                    System.out.println(studentname[q] + "'s status: cum laude");
                                           else if (gpa[q] >= 3.65 && gpa[q] < 3.85)
                                                    System.out.println(studentname[q] + "'s status: magna");
                                            else if (gpa[q] >= 3.85)
                                                    System.out.println(studentname[q] + "'s status: summa");
                                            else if (gpa[q] >= 2.00 && gpa[q] < 3.45)
                                                    System.out.println(studentname[q] + "'s status: ");
                                    else
                                            System.out.println("Student name not on file.");
                    System.out.println();
                    System.out.println("1.  List student names");
                    System.out.println("2.  List credits");
                    System.out.println("3.  Show total credits");
                    System.out.println("4.  List gpas");
                    System.out.println("5.  List gpas in ascending order");
                    System.out.println("6.  Show weighted average of gpas");
                    System.out.println("7.  Show information about a given student");
                    System.out.println("8.  Add a new student");
                    System.out.println("9.  Quit");
                    System.out.println();
                    System.out.println();
                    System.out.print("Enter your choice: ");
                    choice= sc.nextInt();
                    System.out.println();  
                    // Option 9 quits program
    }

  • How do you keep a VI running while waiting for user input?

    I have a VI that:
    1.  The user enters set points.
    2.  The user starts the VI and the VI sends the set points to an external process via a serial interface.
    3.  The VI  stops running.
    4   The user waits for the external process to complete.
    5.  Repeat sequence. Go to Step 1.
    This works well except for one small problem.  Starting the VI in step 2 causes an external micro controller to reset.  During the reset it will ignore set point commands.  To get around this problem a delay has been added between when the VI opens the serial port and when the VI sends the set points to the external process   Is it possible to keep a VI running continuously in this type of application, thereby eliminating the start up and shut down of the serial interface?
    If yes, how do you keep a VI running while waiting for user input?
    Howard

    The ones for the event structure specifically. I'm posting from my phone. Look at the basic ones for user input. even a simple while loop with a boolean and a case statement would work.

  • How to make Flash to wait for user input

    Hi,
    I found this PHP script, then I made some changes to make it
    FEED the Flash user interface with online user input.
    The main concept of this script is WAITING for user input, so
    it shows the messages and then go to next line and so on.
    The user input go to directly to TEXT file which writes in
    lines, each line has a unique id = (mag_id).
    There "get_msge.php" which works as the middleware between
    FLASH and messages text file.
    The problem, its doesn’t show any data while there are
    data in the text file.
    Help here please, best regards.
    This is the link of
    problem illustartion
    AS is:
    // create an object to store the variables
    varReceiver = new LoadVars();
    // load the variables from the text file
    varReceiver.load("get_msg.php?file_id=1&msg_id=1",
    "POST");
    // trigger something - when the variables finish loading
    varReceiver.onLoad = function(){
    //the variables have finished loading
    if (this.msg_id == 1) {
    _root.xmsg1_swf.text = this.msg;
    _root.xmsg1_ch.text = this.msg;
    gotoAndPlay("line2");
    } else {WAIT }
    PHP is:
    <?php
    //get these values from the FLASH
    $file_id_swf = $_POST ['file_id'];
    $file_name = "messages/messages".$file_id_swf.".txt";
    $msg_id_swf = $_POST ['msg_id'];
    // [0] ."||".[1] ."||".[2] ."||". [3] ."||".[4]."||". [5].
    //$msg_id."||".date."||".time."||".$from."||".$to."||".$msg.
    $fp = fopen ($file_name, 'rb');
    while (!feof ($fp))
    $msg_txt = fgets ($fp, 1024);
    $line = explode ("||", $msg_txt);
    $msg_id = $line[0];
    $from = $line[3];
    $to = $line[4];
    $msg = utf8_encode ($line[5]);
    if ($msg_id == $msg_id_swf)
    echo
    "msg_id=".$msg_id."&from=".$from."&to=".$to."&msg=".$msg;
    }//while
    fclose ($fp);
    ?>

    Well, given the things that you've written, I don't think it
    could. There technically isn't any code in flash that lets it
    "wait." In order to "wait," you must run the script over again
    until some condition is met.
    However, your code does look accurate. Why do you need to
    wait? The onLoad function will be invoked WHEN something is loaded.
    So, I don't see the reason for the "waiting."
    In addition to that, I would like to say that using text
    files isn't that great with flash. I have done this before and
    noticed several problems with using text files. The biggest problem
    is that the text files are cached after being loaded. Every time
    you re-load it again, you will get what you got the first time
    until you reset your cache (ie. close your browser). I suggest
    using MySQL. (Just my thought.)

  • Process chain Error: This AND process is not waiting for event RSPROCESS

    Hi All,
    I am facing an error in the process chain in PRD.
    Error message: This AND process is not waiting for event RSPROCESS.
    We had a process chain which had two sub chains which run parallel and below of this we had AND process type and below of the AND process we had 4 more jobs.
    Once the two subchains got successfully loaded, the and process should turn to green and further 4 jobs should start.
    It is a daily load , it worked fine from past years,but suddenly the AND processtype is getting failed.The thing is in the two subchains if one got completed, the AND process process is not waiting for 2nd subchain to get completed.The AND process is turning to RED (status: cancelled) . I tried to repeat the AND process once after above 2 subchains loaded, but it didnt worked.
    And i removed the existing AND process and created a new one and placed it in same place and activated and schedules again.but still it is getting failed with same error.
    Thanks in advance,
    Sai Chand.S

    Hi,
    If you did any transports related to that metachain we face similar kind of issues.
    not only the AND process , we need to remove all the process before executing the AND process and create it again.
    It helps you, you said your in production So you should take the proper approvals and do it.
    Regards,
    Yerrabelli.

  • Need Help waiting for user input.

    I've got a simple card game, which I've pretty much made all with swing. I have a JTextField and a JButton. I want the user to input a number into the textfield and the click the button which fires the action listener. This then takes the text and reads it and set a boolean hasBid to true. I don't want to program to continue until this has happened so I made an empty while(!hasBid) loop. The first time through, the program starts and stop until the user inputs something and click the button. The second time through, however, the whole window freezes. For somereason object aren't even being displayed which are displayed before this while loop. Without the while loop, everything runs fine, but the program won't stop to wait for input.
    So, my question pretty much is how can I get the program to stop for user input in a function which will be called multiple times. I don't want to use a JOptionPane or anyother pop-up box. If my way won't work, I'd really like to know of another way. Thanks for any help!

    you simply need to separate the functionality of your input object and the card game into two threads. as sanbingo said, running in a while loop prevents your GUI from even drawing its components.
    Remember: AWT/Swing is an event driven interface! so only events can/should cause some action to happen.
    i'd properly implement an event listener which is fired when the input is received. the listener is your game class which upon receipt of the event starts playing. when its done, its done, ie doesn't do anything until it receives an new event from your input object.
    thomas

  • HumanTaskActivity not waiting for user to act

    Hi
    In PROC2 I have FlowN activity, from each branch I'm invoking another process called PROC3 by passing some email as input to PROC3.
    PROC3 contains only HumanTaskActivity.
    The moment I initiate my PROC2 , it invokes PROC3, but in PROC3 HumanTaskActivity doesnt wait for the response, it gets complete without sending any email.
    Any help would be very handful for me.
    Thanks
    Viki

    Hi Krish
    Thanks for your help.
    From my PROC2 I'm getting an user name (realm user), I want to pass this to another process PROC3.
    Way I did:
    Create partner link for PROC3 in PROC2
    assign user value to PROC3 input and pass that value to HumanTask.
    My Requirement is :
    In PROC2 I have a flowN activity, inside each branch I get the user value, at this stage I want to pass it to HumanTask.
    Any help will be very much helpful.
    Thanks
    Viki

  • Wait for user input in for loop

    I'm pretty new to labview and I'm having a hard time figuring out how to do this. Basically, I need the user to press a GO button and data aquisition will take place saving it in an array, then the program will wait for the user to press the GO button again and the data aqusition will add more values to the array, and the whole process will repeat 5 times and finally it will average the values.
    To try and figure out how to do this, I tried making a program that loops 5 times and adds a random number to an array with each loop (using shift registers) but I CANNOT figure out how to make each loop iteration wait on the user to press a button. Any advice?

    Hi Roger,
    you can use a dialog in your for loop, or better you use an event structure to react on user inputs. If you use the event structure you can count the button press events and store them in a shift register. With a compare function you can check if your limit is reached and react on it.
    Mike

  • Wait for user input in middle of method

    I have a method in the middle of which I want to give the user a chance to click one of several Buttons. Here is the basic design of the method:
    Private Sub MyMethod()
    'Code before I need extra input
    'This is where I want to wait for the user to click a Button
    'This is where I will be using the results from the clicked Button
    'The waiting for input and using the results will happen multiple times inside a loop
    End Sub
    The code is in a loop, so exiting the method and putting the rest of the code in the Button handler would not be appropriate. How can I ask the user for input and then return that input to the method where I left? I seem to be tempted to use some kind of async
    method, but since the input will be coming from the user (not another method), that doesn't seem like it would be right (but I don't have a huge amount of experience with async, so I could be wrong about that). Can anybody help me? Thanks.
    Nathan Sokalski [email protected] http://www.nathansokalski.com/

    Hi Nathan,
    You're on the right track: you'll need to await an Async function to put a delay in the middle of your method. The button click will notify the async function to finish.
    You could write a custom function which returns a Task and waits for the notification from the button:
    Task WaitForButtonClickAsync()
    // wait for button click
    and then await that in your main function:
    async void BigNastyFunction()
    await WaitForButtonClickAsync();
    The next question is how to let the button click notify WaitForButtonClickAsync to return.
    We could spin up a worker thread and have it block waiting on a notification, but there is no need to complicate things like that: WaitForButtonClickAsync can just return
    Task.Delay(timeout, cancellation token) and then when the button click handler fires it can cancel the delay.
    See
    Asynchronous Programming with Async and Await and
    Async Cancellation: Bridging between the .NET Framework and the Windows Runtime for more information on cancelling a task.

  • Workflow process does not complete for 3500 but works for about 10 records

    Hi Gurus,
    I am a novice in workflow. Pls bear if the questions are very basic.
    We have a old custom workflow process which is inistaed by a PL/SQL procedure
    WF_ENGINE.CreateProcess ---
    WF_ENGINE.StartProcess ---
    COMMIT; ---
    Now this process has run for over 6-7 years but has always processed max upto 8 or 10 records at a time. Now we had about 4000 records in a table and the process was running for more than 4 days now and it has been termiinated.
    I could not see any new item_keys. Is it because we have a commit only at the end.
    This process has 3 sub processes. they are connected by 'AND' and then we have an 'End' node.
    The first sub-process is simple and we can see a record in wf_items .
    Howver no records are there in wf_items for the 2nd and 3rd sub processes.
    How can we check the point where it has hanged. Querying Status monitor just gives the first sub-process that has completed. How to debug for these cases.
    This has always worked for small volumes. Now we have about 4000 records and we face this problem
    The process actually checks data from the table and based on some conditions , it send 5 different notifications to 5 different mail groups. So we expect about 4000*5 mails to be sent.
    Any help is welcome.
    Thanks,
    L
    Edited by: 901929 on 20-Jul-2012 01:38
    Edited by: 901929 on 20-Jul-2012 01:39

    L,
    Please check the following:
    1. Since this is pure PLSQL you can have a SQL script where you enable a database event to get a trace and then run tkprof on the output to spot any performance problem. You can use something like:
    alter session set tracefile_identifier='Background' max_dump_file_size='unlimited' events '10046 trace name context forever, level 12';
    begin
    wf_engine.CreateProcess(...);
    wf_engine.StartProcess(...);
    end;
    commit;
    alter session set events '10046 trace name context off';
    select fnd_debug_util.get_trace_file_name() tracefile from dual;
    2. Do you happen to know if WF runtime tables are being purged regularly? If this is not done you can expect serious performance problems. If this is WF Apps embedded you need to clean data using the concurrent request Purge Obsolete Workflow runtime data, if not then you can use the APIs in package WF_PURGE.
    3. You will only find one record in WF_ITEMS for this process if those sub-processes belong to the same item type
    4. About the notifications, make sure you are not running into this design problem: https://blogs.oracle.com/oracleworkflow/entry/looping_within_a_workflow_process
    Regards,
    Alejandro

  • How do i make program wait for user input in some dialog box?

    basicly function public UserData getUserData()
    displays window and returns a value when somebody has pressed OK in JFrame. How?

    Extend from JDialog instead of JFrame and it'll give you the waiting that you need.
    To use a JFrame is a little more involved.
    I had to the other day also. I wanted to have a dialog that would be both a dialog and a JFrame. Reason: when the app started up, I wanted to get some data from it (and have it appear in the task bar for normal application selection), and also wanted the app to call the same window when running but as a dialog (ie: no extra task bar icon). However only the JDialog stopped the calling thread for the dialog.
    To get the JFrame to do the same, I invoked a thread and piled all of the logic into that, and when the user did all that I wanted them to, closed the Frame and released the thread with all of the statefull stuff that I wanted.
    Worked a treat.

  • LIBOVD ERROR  - "validateContextToken: workflow session was not found for given context. Create a new workflow session with token"

    Hello everyone,
    I have the following scenario:
    We're using "Oracle SOA Suite 11g 11.1.1.7.0" (Patched w/ 17893896) mainly for a BPM/Human workflow composite. Former, we were having the error bellow:
    <Mar 16, 2015 1:13:03 PM BRT> <Error> <oracle.soa.services.workflow.query> <BEA-000000> <<.> Verification Service cannot resolve user identity. User weblogic cannot be found in the identity repository. Workflow Context token cannot be null in request.
    ORABPEL-30511
    When that error ocurred, no one was able to use the system (BPM/Human Workflow).
    I opened an SR, and after some analysis from the support, it recommended me to set up "virtualize=true" in EM, and restarting the domain. Then it started logging the following:
    connection to ldap://[10.200.10.57]:7001 as cn=Admin.
    javax.naming.NamingException: No LDAP connection available to process request for DN: cn=Admin.
    Looking up on support KB, I found this note Doc ID 1545680.1 and increased from Max size of Connection Pool 10 to 200. That did work successfully! Problem now is that the <SERVER>_diagnostic.log is being filled up with the following error:
    [2015-03-31T16:03:46.421-03:00] [soa_server2] [ERROR] [] [oracle.soa.services.workflow.verification] [tid: [ACTIVE].ExecuteThread: '19' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: e0194e38aa6c9a2f:39fc1ff9:14c5def5247:-8000-00000000000a5653,0] [APP: soa-infra] <.>    validateContextToken: workflow session was not found for given context. Create a new workflow session with token=51490173-e3d0-41dd-ae99-983915aa8454;;G;;Z+P7Oe9ABnoTUQD9ECryEW2l0/8yRcqPDyZsOWBCuzMmRgA3Qsj601TxmWQ87z2MjuwW5AH+KzgjIwkPmhJFdpc1FrE6Y/MrN1bxIDHJWu2/zP3iSNwKD07hRrh/U37Ea0TvaQyuaHJIog9y3Ptmzw==
    One important point is that we're using only the embedded WLS ldap. So I am not 100% sure if we should be using the virtualize flag=true, once all docs I read point out that this should be done when using multi-ldap providers.
    Also, I only got this error in the "diagnostic.log".
    Although, no user has complained about using the system, I really want to work it out. Anyone has any suggestions?
    Thanks in advance!

    I have moved your thread from Certification to SOA Suite to get proper assistance.
    Thanks,
    Lisa

  • Asking for user input in the middle of a function

    Here's my issue.
    I need to launch and input window in the middle of a function for user input.  Before I can continue through the function I need a response back from the user first.  Psuedo code below:
    function
         function begins
         pop up window is launched to ask for user input
         function continues after users submits input
         user input from pop up window is used in function return value
    Let me know if you need more clarification but this is essentially what I'm attempting to do.

    The way actionScript works it isn’t really designed to work that way
    Is there any reason why you have to only use one function as you have written
    I think you really do need to split up your code into sections that a, set up the pop-up with  event listeners waiting for the input to be completed, trigger the pop up with user input, then have a handler function that then interprets the results of the user action.
    Trying to force the system into a closed loop while waiting will be a bad idea.
    By using a pop-up or an alert window that is set to be modal, you are effectively stopping your application doing anything else until the user input has been completed, but still not locking the app into a closed loop. Imagine what would happen if you did put the system into a closed loop, the mouse movement wouldn’t be updated, the screen wouldn’t refresh and the system wouldn’t be able to handle your user input. the reason for using async model is you are able to let the system still do all its background task (move the mouse, give inputs focus, keep the screen drawn etc) but still tell a part of your app to ‘wait for input’ before carrying on it execution of your logic
    Do you come from another programming language? Maybe one that uses less of an OOP approach? I only ask, as the method you are describing is much more like how I had to program when  I worked on computers years ago as an assembly programmer.
    In actionscript and most other modern languages and Oss you don’t have total control of the system and cant lock it into an action as you describe.
    You need to have an asynchronous approach to situations like you describe and let the system run in the back ground while you are waiting for input (or date from a server for that matter)
    Please excuse me if I am telling you things you already know.
    What exactly is your use case for this? Maybe if we knew exactly what you are working on I might be able to offer a solution that would make sense for your particular situation.
    Hope all is going well and please feel free to contact me if you are stuck

  • Create a screen for user input in BI

    Hi Experts,
    I want to know can i creat a screen for user input in BI with module pool programing
    and i want to store the data in ztable in SAP-BI.
    Moderator message: please search for available documentation, these forums are no substitute for ABAP training.
    Edited by: Thomas Zloch on Dec 10, 2010 8:37 PM

    I'm afraid that I cannot get it. I had a look at the docs you suggested before posting, and still, no luck (...)
    JOptionPane.showMessageDialog(dialog, "Please input info");Can you please tell me what I'm doing wrong and I cannot add the JDialog to the JOptionPane?Re-read the API and tutorial. JOptionPane is meant specifically to spare you from instantiating manually a JDialog. The showXxxDialog(...) methods do create a JDialog of their own, based on the contents supplied as arguments.
    In particular, using the 2-arguments variation showMessageDialog(Component parentComponent, Object message):
    - The first argument parentComponent is not be the dialog you want to display, but the component over which you want the dialog to appear. The most typical value are this or null.
    - The second argument is the "message" to display, but as described in the API, it can be a JComponent, that is, even a JPanel with child widgets (in a word, a JPanel containing the specific form you'd display in the dialog if you were writing the dialog manually).
    Again, at the risk of insisting densely, I'm only quoting the API an tutorial, so please read them attentively.
    Edited by: jduprez on Nov 2, 2009 2:29 PM - Sorry Kevin, hadn't seen you latest reply. I completely subscribe to the thought process you recommend.
    Edited by: jduprez on Nov 2, 2009 2:32 PM
    Thinking about it further, I don't completely subscribe... Indeed it looks like a bad idea to make the OP wonder about dialog.setVisible() when JOptionPane enables him to forget about the hand-made dialog. I stand by my own advice ("JDialog" should not even appear in this code extract).

  • How to prompt for user input in Forms

    How do I prompt for user input in Forms?
    I am writing a piece of code where the user may choose, by clicking either of three buttons on an alert, to have the system assign a value to a variable, to input a value or to do neither?
    If the user chooses to input the value I want to update a set of database fields with the value.
    I have thought about showing a view where the value may be entered into a field displayed on that view. The value will be assigned to the variable by the user clicking a command button. The question I have in this case though, is whether, after the command button is clicked, control will be passed back to the code that called the view in the first place?

    Desgordon,
    This can be accomplished by displaying your message to the user using an Alert. I use 3 different Alerts (Note, Caution and Stop) in my forms and they are inherited from a central source file (such as an Object Library or a Template Form) so they can be used by all of my Forms. You can set the text of the Alert using the SET_ALERT_PROPERTY() built-in and capture what button the user presses with the SHOW_ALERT() built-in. Additionally, if you need more than one button to be displayed in an alert, you use the SET_ALERT_BUTTON_PROPERTY() built-in to rename the default button or to add up to a total of three buttons in the alert. Here's an example:
    DECLARE
       Alert_ID       ALERT;
       v_AlertType    VARCHAR2(10) := 'CAUTION';
       v_AlertTitle     VARCHAR2(25);
       v_AlertText    VARCHAR2(150);
       n_AlertButton  NUMBER;
    BEGIN
       v_AlertTitle := 'Title of Alert';
       v_AlertText := 'This is message to the user.';
       /* Code leading up to the decision point. */
       alert_id := FIND_ALERT(v_AlertType);
       /* Note: I only set the Label of Button 2 because the default button 1 label is 'OK' */
       SET_ALERT_BUTTON_PROPERTY(v_AlertType, ALERT_BUTTON2, LABEL, 'Cancel');
       SET_ALERT_PROPERTY(Alert_ID, v_AlertTitle, v_AlertText);
       n_AlertButton := SHOW_ALERT(Alert_ID);
      /* Now I can test the value of n_AlertButton for 1 or 2 to find out what button the user selected. */
      IF ( n_AlertButton = 1 ) THEN
         /* Do something, because the user selected 'OK' */
      ELSE
         /* It is assumed at this point that the user selected 'CANCEL' */
         /* Stop processing any further. */
         RAISE form_trigger_error;
      END IF;
    END:Hope this helps.
    Craig...
    -- If my response or the response of another answers your question, please mark the response accordingly. Thanks!

Maybe you are looking for