Passing state into a Task called from a continuation

I have implemented a solution from Crafting a Task.TimeoutAfter Method and I curious about the best practice regarding passing data upwards from a Task to its continuation.
I would like to know if the parent task released the semaphore, I could simply release it only in the continuation, is that safe enough?
Task task = Task.Factory.StartNew(
() =>
try
this.MyMethod(foo, bar);
catch
// Signal termination.
taskCancellationTokenSource.Cancel();
// Propagate up.
throw;
finally
// Release handle.
semaphore.Release();
TaskCreationOptions.AttachedToParent)
.TimeoutAfter(5000)
.ContinueWith(
antecedent =>
// How can I pass state/indicator into this task to know if I need to do ths?
semaphore.Release();
if (antecedent.IsCanceled || antecedent.IsFaulted)
throw new System.TimeoutException("A task has hung.");
Thanks!

Hi Ritmo2k,
The Semaphore.Release method will release one semaphore to the pool. If the pool is already full, it'll throw SemaphoreFullException, that means you cannot call Release method until a thread has called WaitOne method. And this method will return an integer
which indicates the count on the semaphore before Release method is called.
If I understand you correctly,you want to know the count on the semaphorebefore you call the second Release method. I think you could create a global integer variable to store the return value from the first call of the Release method.
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey.

Similar Messages

  • Trying to pass arguments into a method call and failing

    Hi everyone, I'm fairly new to programming, and newer to Java. I'm currently working on a project that pulls fields from a database based on a name, and I'm having some trouble getting the connection string set up.
    Statically defined, the database connects and the program logic that follows works just fine. The problem is that to future-proof this application, I need to pass the database URL, port, db instance, username, and password into the program as arguments from the batch file that will then be scheduled to run the program on a job-by-job basis.
    Product Version: NetBeans IDE 6.1 (Build 200805300101)
    Java: 1.6.0_06; Java HotSpot(TM) Client VM 10.0-b22
    System: Windows XP version 5.1 running on x86; Cp1252; en_US (nb)
    Userdir: C:\Documents and Settings\xxxxxxxxxxx.SPROPANE\.netbeans\6.1
    Here's my current working source (with the network addresses obfuscated):
    package processsqrjob;
    import java.io.*;
    import java.sql.*;
    import java.util.Date;
    public class Main {
         * @param args jobname, jobparameters, HYPusername, HYPpassword, HYPservername, HYPport, oracleDBURL, oracleport (default 1512), SID (dbb?), oracleusername, oraclepass
         * @throws exeption
        // jobname [0], jobparams[1], hypusername [2], hyppassword [3], hypservername [4], hypport[5], oracledburl[6], oracleport[7], sid[8], oracleusername[9], oraclepass[10]
        public static void main(String[] args) throws SQLException
            DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleserver.local.intranet.com:1521:dbname", "username", "pass");
            Statement stmt = con.createStatement();
            Date date = new Date(); //get the system date for output to both the error log and the DB's lastrun field
            System.out.println(date); //print the date out to the console
            System.out.println(args[0]); //print the job name to the console
            String sourcefolder=""; //we're going to load the job source folder into this variable based on the job's name
            String destfolder="";//same with this variable, except it's going to get the destination folder
            try {
                ResultSet rs = stmt.executeQuery("SELECT * FROM myschema.jobs WHERE NAME =\'"+args[0]+"\'");
                while ( rs.next() ) {
                    sourcefolder = rs.getString("sourcefolder");
                    destfolder = rs.getString("destfolder");
                stmt.executeQuery("UPDATE myschema.jobs SET lastrun ='"+date+"' WHERE name ='"+args[0]+"'");//put this after hyp code
    //            System.out.println(sourcefolder);
    //            System.out.println(destfolder);
    //            System.out.println(description);
                stmt.close(); //close up the socket to prevent leaks
            }catch(SQLException ex){
                System.err.println("SQLException: " + ex.getMessage());
                logError(args[0], ex.getMessage());
    }That works, and it connects to the database and everything. But when I pass the variables in from the project properties run settings, I get the following exception:
    Exception in thread "main" java.sql.SQLException: invalid arguments in call
            at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
            at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
            at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207)
            at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:235)
            at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:440)
            at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:164)
            at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:34)
            at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752)
            at java.sql.DriverManager.getConnection(DriverManager.java:582)
            at java.sql.DriverManager.getConnection(DriverManager.java:207)
            at processsqrjob.Main.main(Main.java:42)
    Java Result: 1That is with Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleserver.local.intranet.com:1521:dbname", "username", "pass"); changed to Connection con = DriverManager.getConnection("jdbc:oracle:thin:@"+args[6]+":"+args[7]+":"+args[8]+"\", \""+args[9]+"\", \""+args[10]+"\"");{code}, with args 6 7 8 and 9 set to url, port, dbinstance, username, and password respectively.
    Perhaps it's the way I'm escaping the quotation marks, but I put that same line inside a System.out.println() and it output it exactly as I had typed it in statically before, so I don't know what it could be.
    I would really appreciate any advice. Thanks in advance for your time.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    I think you're mixing up SQL and Java. The Java method expects the user name and password as separate parameters, not encoded in one String. So you shouldn't be concatenating args[9] and args[10] at all, they should remain as separate parameters.
    The call should be:DriverManager.getConnection("jdbc:oracle:thin:@" + args[6] + ":"+ args[7] + ":" + args[8], args[9], args[10]);
                                                     parameter 1                                  2         3

  • Passing Parameters to Bounded Task Flow from JSPX

    Hi All,
    1. Created a JSPX page using UIShell template.  This page contains 4 UI Components (InputComboBoxListOfValues) in SingleObjectContextArea.  Created a Managed Bean for this page and capture the selected value in ValueChangeListner and added the value to pageFlowScope.
    2. Created Unbounded Task Flow, dragged the JSPX page.
    3. Have a existing Bounded Task Flow with page fragments, it has MethodCall activity which is expecting inputParameter values from JSPX.
    4. To call the Bounded Task Flow from Unbounded Task Flow (has JSPX page) created 2nd JSPX page using UIShell template.
    5. Dragged the existing Bounded Task Flow into 2nd JSPX page, in context menu selected Region.  This Region is created in SingleObjectContextArea of UIShell.
    6. When dragged its asking about inputParameter mapping of Bound Task Flow.
    7. Configured the inputParameter value which are coming from pageFlowScope.
    8. Dragged the controlFlow from 1st JSPX to 2nd JSPX page to complete the Navigation.
    9. When running the Unbounded Task Flow, it showing 1st JSPX with LOV.
    10. Selected the values and clicked on Submit Action.
    11. Its now showing 2nd JSPX which contains Bounded Task Flow.
    12. But its displaying empty records table.  (Note: I am passing parameters to MethodCall inputParameters as pageFlowScope, My DB has displaying records based on inputParameters when tested it from OrcleSQLDeveloper)
    Could any body help me on this issue.
    My Code Snippets of Data Binding of 2nd JSPX page which has Bound Task Flow as a regionModel.:
    <taskFlow id="TaskFlow1"
                  taskFlowId="/WEB-INF/oracle/apps/TaskFlow1.xml#TaskFlow1"
                  activation="deferred"
                  xmlns="http://xmlns.oracle.com/adf/controller/binding">
          <parameters>
            <parameter id="PartnerKeyType" value="#{pageFlowScope.PartnerKeyType}"/>
            <parameter id="PartnerKey1" value="#{pageFlowScope.PartnerKey1}"/>
            <parameter id="InteractionPartnerRole"
                       value="#{pageFlowScope.InteractionPartnerRole}"/>
            <parameter id="BusinessProcessName"
                       value="#{pageFlowScope.BusinessProcessName}"/>
          </parameters>

    Hi
    first of all Can you get the pageFlow scope variable in taskflow?which you are passing from jspx page?
    if you are able to get the Lov value in Taskflow try refresh taskflow on changing the LOV.
    you need to add input parameter type as boolean,change the parameter from false to true when the LOV value changed.
    now use refreshifNeeded property in pagedef bindings file

  • Passing telnet session between LabVIEW calls from TestStand

    From TestStand I am calling VI's from telnet.llb.
    In one TestStand step  am opening a telnet session to an IP address and collecting the telnet connection (U32). In the next TestStand step I pass the telnet connection  to a telnet write VI but get this error.
     "Dequeue Element in Acquire Semaphore.vi:1->Telnet Write.vi:1->Telnet Write.vi.ProxyCaller"
    The telnet open, write, read, and close work great if I pass the telnet session number within the same VI. But I need to keep the session open between calls from TestStand because one huge VI is not feasible.
    thank you
    josh
    Solved!
    Go to Solution.

    Hi,
    Maybe the following link can help
    http://forums.ni.com/t5/NI-TestStand/Can-a-Telnet-session-be-passed-from-1-vi-to-the-next-in-test/m-...
    Regards
    Ray Farmer

  • How to pass variables to a program called from long text of an error msg ?

    Hi,
    The aim is the following: in the long text of an error message, there should be a link; this link must call a program or a transaction and pass to this program or transaction the four variables of the error message. Is it possible to insert such a link with parameters in the long text of the error message ? If yes, what is the syntax for this ?
    (I searched in the forum and found the way to insert a link to a transaction, but I found nothing about parameters).

    Thank you for the answer.
    Unfortunately, this solution is not applicable in my case. I'm using the application log and the scenario is the following:
    - the user displays the application log in transaction SLG1
    - he sees a lot of error and succes messages
    - by dubble-clicking on these messages, he displays the long text of the messages
    - I want a link in these long texts to a transaction using the variables of the messages. I tried inserting a link to a transaction, and the transaction is well called, but with a breakpoint I checked variables SY-MSGV1 to MSGV4 and they are empty.

  • Loosing of object state when it is called from server to client side

    Hi,
    Iam loosing an object values when that object is returning from server side to client side.
    Even my server class implements serilizable interface, the object is not retaing its values..
    can any one suggest regarding this Issue..
    Regards,
    Dev

    got the solution

  • Why I can't pass parameters into CR from VB6

    I want to Pass parameters into crystal report from VB6.
    But whatever I try, it don't work Fine,
    always Show the message "This field name is not known".
    Crystal Report::
    Parameter: a.@cmpy;
                       b.@p1
    formula:
    a. If {?@cmpy} ="USA" or {?@cmpy} ="usa" then
          "This is test 1 sentences"
       else if {?@cmpy}="TWD" or {?@cmpy} = "twd"  then
          "This is test 2 sentences"
    b. if trim({?@p1})="1" then "This is test 3 sentences"  
    VB::
    Public oApp As New CRAXDDRT.Application
    Public oRpt As CRAXDDRT.Report
    oRpt.ParameterFields(1).ClearCurrentValueAndRange
    oRpt.ParameterFields(2).ClearCurrentValueAndRange
    oRpt.ParameterFields(1).AddCurrentValue ("TWD")
    oRpt.ParameterFields(2).AddCurrentValue ("1")  
    I had trid to use "IsCurrentValueSet" function to check whether parameter was set or not, and It responsed "Ture",so I so confused about it.
    Anyone know about this??
    ps. I had trid other way that change the formula indirectly, although it can work fine, but it isn't a right way to solve my problem.
    Edited by: DeanLai on Jun 22, 2010 8:54 AM

    I Find something.
    First I tried to add parameter and wanted to see these value on Report.
    So I inserted {?@cmpy} and {?@p1} into report, and used VB code
    "oRpt.ParameterFields(1).AddCurrentValue ("TWD")" and "oRpt.ParameterFields(2).AddCurrentValue ("1")",
    then ran the process, but it didn't display any value on report,
    so why it couldn't pass value into parameter??
    then I tried other way which was to add new parameter, and used the same way to pass
    value into parameter, then it can display value on report.
    So the different between these is {?@cmpy} and {?@p1} which come from
    Stores Procedure.
    While I set Database in crystal report, set all value into Store Procedure's
    parameter(the window about "Enter Parameter Values"), then it automatic come out the DB columns and parameter(SP parameter)
    , course include {?@cmpy} and {?@p1}.
    Do this problem cause my question?
    Can we pass value into parameter which come from SP parameter??
    Can we use these parameter into forumla??
    Edited by: DeanLai on Jun 30, 2010 11:56 AM

  • Did anyone else have numerous events merged into one called "From MobileMe" after MM ended?

    I just recently noticed that on June 30th, when I was prompted by iPhoto to import the old MobileMe albums after MM ended, that many of my events were merged into one event called "From MobileMe".  The correlation was that they were all MM albums that I had uploaded directly from the event itself to create the album. 
    It also caused some other strange behavior with blank thumbnails for one set of photos, yet they appeared in their original event as well.  I am so dissappointed.  Apple only had a year to figure this out.
    Has anyone else had this problem, and how have you handled it.  The only two options I'm seeing are restore from Time Machine (but then lose everything I've imported and organized since July 1st, or just going through, reorganizing them, and hoping that none were accidentally deleted.  So annoying.

    The Apple Genius helped me sort out the problem: one bad FW800 cable!
    All my switiching things around, with phone support from multiple Apple Advisors, trying to figure it out and that one cable always managed to work its way into the mix! Only when the Genius and I had multiple Thunderbolt-enabled devices to experiment with were we able to isolate the bad cable. Odd how the problem seemed to mimick the random-unmounting issue others have been experiencing.
    My 2012 iMac itself is in perfect working order! As are the G-Drives. Best possible outcome for me!
    Thanks for your feedback.

  • Populate data into standard component alv from Zcomponent popup data selected

    HI All
    I have to call Zcomponent in standard component and need to pass value into Zcomponent (table) and from  Zcomponent select row and pass back to standard component.
    Steps
    1) Created Zcomponent with interface node
    2) Enhanced the standard component and create used components for  Zcomponent and make it available at component controllers and view controllers.
    When I click on Button in standard component I am calling this Zcomponent as popup window.
    My problem I when I select data in Zcomponent I need to populate the data in ALV of standard component.
    I thought of 2 methods to take my selected back and populate data into standard component ALV.
    1) Create event: EVENT1 and   Interface method Method1 and link to EVENT1
    So that I can raise this event in Zcomponent and populate the data into standard component ALV
    Problem: Under events interface checkbox is visible, when I select my enhancement implementation the interface checkbox not visible under events tab?.
    2) Create Interface method Method1 write logic to populate data into standard component ALV
    But here to when I select my enhancement implementation the interface checkbox not visible under?
    Can anyone please help me why interface checkbox is not visible or any better solution to populate the data back to standard component alv?
    Thanks
    Gopal

    Hi Gopal,
    You can achieve your requirement by using EVENTS as below
    Create an event SET_DATA in component controller of zcomponent and mark it as interface and also include the parameters like context_element( type ref to if_wd_context_element), etc as below
    Now, create an action for the event onLeadSelect of your zcomp Table and write the below code
                     DATA lo_ctx_element TYPE REF TO if_wd_context_element.
                   "get the selected row
                     lo_ctx_element = wdevent->get_context_element( name =
                        'NEW_ROW_ELEMENT' ).
                   "Raise the event with parameter
                   wd_comp_controller->fire_set_data_evt( context_element = lo_ctx_element ).
    Use the Zcomponent in your standard component and make available in std. view's properties
    Create an event handler SET_DATA method for your Zcomp's event as below
    Now, inside this method, you get the parameter CONTEXT_ELEMENT and get the data from this context element as below
                   context_element->get_attrribute( ) or
                   context_element->get_static_attributes( )
    You can populate the data into standard component based on the obtained value from Zcomponent.
    Hope this helps you.
    Regards,
    Rama

  • Passing paramaters into JWS

    I am considering porting an applet-based program to JWS, but I have two worries:
    This program fits into a larger shell which is controlling security. I really need to ensure that the user launches it from the the web page which the security system provides. I could, if necessary, live with telling the users, "Well, yes I know that Java Web Start says you can get an icon on your desktop or a shortcut in your start menu, but it won't work if you do that." But I would rather just disable them programatically.
    My larger worry is that the security information is now being passed as applet parameters. Can I pass parameters into a JWS application from the launching web page?
    Any information would be appreciated.
    Thanks,
    Scott Sauyet

    I'd like to gain some of the advantages in JWS.
    The applet on the browser is dependent upon the user not surfing away. It's an application that some of our users may keep running in the background for hours while they do other things. But when they click on a web link in an email, it might shift their browser off the applet. I'd rather have the interface an application that they couldn't shut down unintentionally.
    I'm not concerned about memory usage; that will remain relatively small.
    The offline execution facility would be fine if we were to find a way to integrate it into our security environment. But it's not clear at the moment if that will ever happen.
    Still, my biggest concern is about passing parameters into JWS. Is this possible?
    Thanks for your response,
    Scott Sauyet

  • Can we call a task-flow from a bean in adf?

    Sir,
    Can we call a task-flow from a bean in adf?
    Regards

    you can do this using taskflow call activity
    check - Oracle ADF World: ADF Task Flow Call Activities
    http://docs.oracle.com/cd/E24382_01/web.1112/e16182/taskflows_activities.htm#ADFFD21945
    you can pass input parameter map and dynamic taskflow reference from managed bean
    check -https://blogs.oracle.com/DavidGiammona/entry/dynamically_assign_task_flow_c
    Or if you want to use dynamic region to swich between taskflows
    see- Zeeshan Baig's Blog: Working with Dynamic Regions in Oracle ADF
    Ashish

  • PublishedPhoto:getPhoto() needs to be called from a task context?

    Does publishedPhoto:getPhoto() need to be called from a task context? It appears to bail out in an ugly manner if not.
    If so, this is really, really inconvenient.

    I think I see what you mean, somewhat.
    You can't just write a button handler, (lest you risk having errors that aren't caught...), you have to wrap it in a task with a context, and associate an error handler with it...
    It took me a long time to come to that realization. I now have boring boilerplate code that I always use for wrappage so I forget about the old days...
    Would you, or how would you suggest Adobe improve this "mess"?
    Me? - dunno, maybe build that boilerplate stuff into Lr?, i.e. Lr traps any errors not caught by the handler so at least an error message can be displayed. And should they always be asynchronous? If so, should recursion always be guarded against? Maybe so - and if one wanted to be able to fire multiple concurrent tasks they still could by creating their own tasks that aren't guarded. Would there ever be a need for it *not* to be asynchronous?
    Haven't given this too much thought...
    But, I did just check - there is significant overhead in calling a function with a context vs. plain (without creating and destroying a context). So, it may be wise to wrap loops instead of wrapping functions called in a loop.
    Sometimes I think if Adobe was just clearer in the documentation, it would be an improvement, i.e. if it said in the api doc for button action functions that errors would be deep sixed, and functions requiring async tasks would fail, and provide an example of how to trap errors in an action handler...
    R

  • Call bounded task flow from managed bean

    Hi experts,
    can we call a bounded task flow from a managed bean?
    if yes , please explain.....
    Thankz in advance
    PMS

    Hi john,
    Thankz for ur reply........sorry if im asking stupid questions.
    this is my tree selection handler
    public void treeSelectionHandler(SelectionEvent selectionEvent) {
    RichTree tree1 = (RichTree) selectionEvent.getSource();
    RowKeySet rks2 = selectionEvent.getAddedSet();
    Iterator rksIterator = rks2.iterator();
    if (rksIterator.hasNext())
    List key = (List)rksIterator.next();
    JUCtrlHierBinding treeBinding = null;
    treeBinding = (JUCtrlHierBinding) ((CollectionModel)tree1.getValue()).getWrappedData();
    JUCtrlHierNodeBinding nodeBinding = nodeBinding = treeBinding.findNodeByKeyPath(key);
    DCIteratorBinding _treeIteratorBinding = null;
    _treeIteratorBinding = treeBinding.getDCIteratorBinding();
    JUIteratorBinding iterator = nodeBinding.getIteratorBinding();
    String keyStr = nodeBinding.getRowKey().toStringFormat(true);
    iterator.setCurrentRowWithKey(keyStr);
    JUCtrlHierTypeBinding typeBinding = nodeBinding.getHierTypeBinding();
    String targetIteratorSpelString = typeBinding.getTargetIterator();
    if (targetIteratorSpelString.equals("${bindings.Iascat1View1Iterator}"))
    System.out.println("Tree Selected*************"+targetIteratorSpelString);*
    else
    if(targetIteratorSpelString.equals("${bindings.Iascat2View1Iterator}"))
    *System.out.println("Tree Selected**************"+targetIteratorSpelString);*
    else
    *System.out.println("Tree Selected**************"+targetIteratorSpelString);*
    I hav bounded task flow for each iterator for creating new record......i hav to replace code for calling bounded task flow instead of printing statement
    PMS

  • Calling from an EJB into a JSF Backing Bean

    Hello all,
    I'm looking for some help in making calls from an EJB into a Backing Bean (the converse is fairly straightforward). My basic question is: what is regarded as the best way to do this?
    However, for anybody who's interested, I'll describe what I've been trying...
    Here's my situation (I'm working with OC4J 10.1.3.2). I have a simple application-scoped backing bean:
       public class BackingBean implements SimpleInterface, Serializable {
           private String greeting = "Hello, World";
           private SessionEJBRemote blBeanRemote = null;
           public BackingBean() {
               // get hold of EJB
               // [ ... code to obtain EJB's remote interface snipped ... ]
               // set the callback with the EJB       
               try {
                   blBeanRemote.setCallback(this);
               } catch (Exception ex) {
                   ex.printStackTrace();
           // methods to manipulate the greeting string
           public String getGreeting() {
               return greeting;
           public void setGreeting(String greeting) {
               this.greeting = greeting;
       }SimpleInterface, which my Backing Bean implements is, well, a simple interface:
       public interface SimpleInterface {
           public void setGreeting(String greeting);
       }And my EJB is also pretty straightforward:
       @Stateful(name="SessionEJB")
       public class SessionEJBBean implements SessionEJBRemote, SessionEJBLocal {
           private SimpleInterface callback = null;
           public void setCallback(SimpleInterface callback) {
               this.callback = callback;
               callback.setGreeting("Goodbye, World");
       }Now, by using SimpleInterface, my intention was to ensure a one-way dependency: i.e. the JSF-level code would depend on the EJB-level code, but not vice versa.
    However, my experimentation has shown that when I make the call to blBeanRemote.setCallback, the parameter appears to be passed by value rather than by reference. This means firstly that, at runtime, by EJB needs to have access to my backing bean class and secondly, that the call to callback.setGreeting has no effect.
    Can anybody suggest how to work around this? Is it possible to pass the backing bean by reference? Is there a better way to achieve this callback? I appreciate that these questions might be more general Java/AppServer queries rather than JSF-specific ones - but hopefully this is something that all you JSF experts have encountered before.
    (Incidentally, I realise that what I'm doing in this example is pointless - what I'm building towards is using the ICEFaces framework to have the EJBs prod a backing bean which will in turn cause a user's browser to rerender.)
    Many thanks - any help very much appreciated!
    Alistair.

    Hi Raymond - yes, you've pretty much got that spot on: an event occurs (say receipt of a JMS message - which is spontaneous, as far as the users are concerned). As a result of that event, the client's view (in their browser) needs to be re-rendered.
    ICEFaces uses the AJAX technique to allow server-pushes, and rather than refreshing the whole page it uses "Direct-to-DOM" rendering to maninpulate the page components. If you've not come across it, and you're interested, then there are some pretty interesting demos here: http://www.icefaces.org/main/demos/ - the "chat" feature of the Auction Monitor demo (if you open it up in two browsers) is the nearest to the effect I'm looking for.
    The Auction Monitor demo uses a number of session-scoped beans, each implementing the ICEFaces "Renderable" interface, and each of which registers itself with an application-scoped bean. The application-scoped bean can thus iterate through each of the session-scoped beans and cause the corresponding browser to refresh.
    Unfortunately, in the Auction Monitor demo, the entry point is always from a browser - albeit the result is then mirrored across all connected browsers. I haven't found any examples of this processing being driven by an external event, hence my experimentation in this area!

  • In Decision task, Method defined after execution is not called from Portal

    Dear All,
    In one of my scenarios, I am using a decision task for approval.
    In that after the approval action is taken i am calling a BAPI to update business function.
    I have called this BAPI in the Methods ( After Workitem Execution ) .
    When I execute this task from the SAP Inbox ,  the method is getting called successfully and the BAPI is also executed successfully. But when I approve the task from portal this method is not getting called at all, and BAPI also fails.
    Actually in the workitem display , I am using the standard FM SWU2_INPLACE_DECISION_PROCESS, will it have any impact when its used from Portal ?
    Is there any common place that will be called from both SAP Inbox and Portal after the task execution , so that based on the decision taken , I can process the action at the same place.
    Advance thanks for your response.
    regards,
    Sabari Prabhu.

    Hello,
    Unfortunately, that I know, there is no way to call your BAPI if you're using the standard decision JavaWD. In fact all that WD does is calling a WAPI to read the decision alternatives and then once the user has taken his decision it calls another WAPI to feedback the decision into the backend.
    The blog mentionned by Pavan concerns only the secondary methods with amodal call, this is different from the before and after methods which are not supported and cannot help you for calling your BAPI. The so-called "Program exits" are not supported either.
    The only alternatives I can see for you are:
    - Develop your own decision screen specific for your workflow and integrate there your BAPI call. This would also give you more flexibility to show your agents the information they need to take their decision. This is the way I usually go for now.
    - Change your UWL settings so that decisions are processed in a GUI screen instead of the JAVA WD screen. The main disadvantage is that you can do this either for all decision or for none of them. You can't just set that up for the decision in your specific workflow (or at least I haven't found how to do it).
    To change the way decisons are processed in UWL you must first change the parameter "List of preview sections to hide" in your UWL iView to add value USERDECISION.
    Then you must create a custom XML config file (or modify an existing one) in which you must customize each decision task used in your company individualy. To do that just take a standard config file and find the Item type entry for a standard decision task as an example. All you have to do is to recreate the same entry for each of the decision tasks you actually use and replace the defaultAction="viewDetail" parameter by defaultAction="launchSAPAction".
    Cheers,
    Patrick

Maybe you are looking for