Human task flow call back events with external web service

Hi All,
I have a requirement to call webservice inside human task flow. I have three participant in my human task flow. Let suppose A, B and C. When A approves then task will be assigned to B and when B approves it will go for C.
My requirement is that, when A approves , then i need to call one external webservice to update database. For this i have enabled call back events from human task flow.
In this way i got while loop inside my BPEL. In onTaskAssigned operation i am now trying to call external web service. My requriment is to call external service and get data from service. After getting response from the webservice, i want to assign it to next participant.
But in this case, when user B approves, it goes to onTaskAssigned block and i am able to make external web service also but mean time, it has been assigned to User C which i do not want.
I want Human task flow to wait for the web service response then only assign it to next participant.
Please help.
Regards,
Sunil

Hi Sunil
Have you tried using WebServices Adapter. The usecase seems pretty straight forward. You have a WebService that has some code and some Operations to update some Database. First thing, I hope you have methods/Operations defined with request and response xsd for each operation.
Now you define the main master payload, that should have all elements specific to your process and also few elements to store the output coming from each operation. Because response of each operation may need to go to other Task and get saved in the Payload also.
You have like 3 Tasks. To complicate, I will assume that each Task can either Approve or Reject. And last 2 Tasks gets data from payload, previous task and also output from the WebService Operation (method).
Task A -> Xor Gateway (Approve/Reject) -> If Approve -> Call WebServices Adapter -> Task B -> Xor Gateway(...) -> ......
At each intersection, you can map the attributes for incoming and outgoing. Based on WebServices output also, you can have Another XOR Gateway and decide to send to Task B or do something else. So combinations of outputs of each service (task or webservice adapter) and XOR gateways, you can have a decent control on the overall flow.
Note: I am hoping the webservices is Synchronous where you get the response immediately.
Let me know if I am missing something.
Thanks
Ravi Jegga

Similar Messages

  • Best practice for integrating oracle atg with external web service

    Hi All
    What is the best practice for integrating oracle atg with external web service? Is it using integration repository or calling the web service directly from the java class using a WS client?
    With Thanks & Regards
    Abhishek

    Using Integration Repository might cause performance overhead based on the operation you are doing, I have never used Integration Repository for 3rd Party integration therefore I am not able to make any comment on this.
    Calling directly as a Java Client is an easy approach and you can use ATG component framework to support that by making the endpoint, security credentials etc as configurable properties.
    Cheers
    R
    Edited by: Rajeev_R on Apr 29, 2013 3:49 AM

  • Integration of Oracle ATG with external web service

    Hi All
    I am new to Oracle ATG 10.1 and am trying to integrate ATG with an external web service. I checked the documentation library and checked ATGWSFrameGuide but it only helped theoritically. Can anybody share any resource / docs to explain how to integrate ATG with web services.
    With Thanks & Regards
    Abhishek

    There is no rocket science involved here. Just create a component whose properties file can contain the required properties like the wsdl path,etc. Create the stub classes out of the wsdl, jar it and place it in your classpath. Populating the request data into stub and invoking an operation will be similar to the one that we use in normal java while working with web services

  • Client proxy generation in NWDS with external web service

    Hello,
    - I try to generate a client proxy in NWDS (7.0 SP12) from a wsdl which includes a complexType and which is non-SAP.
    Wizard Procedure in NWDS: New client proxy definition > i select WSLD source = URL (it is same symptom with local file) > Then i fill URL > Proxy definition window: i see URI and package filled with value of complexType in wsdl file.
    When i click on Finish, wizard generates some file on OS but there is error pop-up "Problems while generating the Proxy Definition".
    NB.
    Same procedure with a similar wsdl without complexType works well .
    Objective is to use this proxy at SAP portal level.
    - Main errors in NWDS logs:
    Caused by: java.lang.Exception:  WSDL part  points to unavailable type with qname:
    so, does anyone has encoutner this issue ? and also does complex type is supported ?!
    (Notes that wsdl format is correct and if i remove "wsdl:type" portion and references, client proxy is correctly
    created in NWDS.)
    Thanks for help! Regards, Frédéric

    Hi,
    Complex types are supported but I am not sure if complextype with sequence is supported. See note: Incorrect field sequence with group SAP Note Number: 813545 (not sure if it is applicable to you as you are on NWSD 7.0 SP12).
    Another note: SAP Note Number: 1266761
    I suggest try to remove "sequence" and then try again.
    Regards,
    Gourav

  • Initiating BPM Process Instances from External Web Service Call

    I'm attempting to update the HelloWorld example so that I can create an instance of the process from an External Web Services Call rather than via the Workspace. Our current SOA Architecture is configured so that all BPM instances are managed through a .NET SmartClient via the Service Bus and the use of PAPI W/S and so I'm wishing to recreate this capability in the new BPM.
    I understand the replacement for PAPI W/S is Human Workflow so I've therefore updated and republished the HelloWorld Example with an Exposed 'TaskService' Service for the Human Task within the BPM Process.
    I've then attempted to reference the TaskService through our existing BPM, and have been able to import a number of generic WSDL's as follows:
    Task Service
    http://vmaquatestapp2:7001/integration/services/TaskService/TaskServicePort?WSDL
    Task Metadata Service
    http://vmaquatestapp2:7001/integration/services/TaskMetadataService/TaskMetadataServicePort?WSDL
    Task Query Service
    http://vmaquatestapp2:7001/integration/services/TaskQueryService/TaskQueryService?WSDL
    When I examine the available operations for these generic services, there are quite a lot, each of which have a fairly complex schema. I believe I should be using the TaskService: InitiateTask Operation to create an instance of my BPM Process but my questions are:
    - Is the above the correct method of interacting with BPM Instances from an external system such as the Service Bus?
    - Does anyone have any examples of a basic XML payload that would initiate a process instance?

    I created an process with a message start event and can call it from an external web service call. I can also pass input arguments and map those to process data objects. However I can not find how to return data as response to the external web service call as e.g. the process instance id.
    Is it possible to this?
    Gr,
    Gert Jan Kersten

  • Consuming external web services in CAF

    Hi there,
    I am trying to set up a show case where a composite CAF app (exposed via WD or VC) uses SAP web services as well as external services. In this case, I chose to use the Fedex web services (http://fedex.com/developer).
    Everything works fine, I am able to import the webservice using the locally stored WSDL into my composite app, apply the mapping and implement the application service......build, deploy...all good.
    The problem occurs when trying to create the physical destination (under nwa/destination template management). NW expects a pointer/url to the wsdl or wsil file, but Fedex doesn't provide that via http. Putting the wsdl on a different web server doesn't help either as the SOAP call will be routed to the same host where the wsdl resides (in this case NOT the fedex system).
    Is there any way to circumvent the WSDL retrieval with external web services in Netweaver ? One alternative solution could be to use the Netweaver Service registry and publish the fedex wsdl to that, but I would like to avoid that as we haven't configured the SR at the moment.
    Thx, Nick

    Looks like I don't need it necessarily.
    There seems to be a bug in NW/CE 7.1. When defining a destination which points to a WSDL file which in turn points to a different server for SOAP messages (ServicePort), the endpoint URL is incorrectly defined.
    WSDL URL: http://www.server1.com/test.wsdl
    SOAP URL/Port: http://server2.com/webservices
    the server tries to dispatch the SOAP call to http://server1.com/webservices which can't be found.
    In CE 7.1.1. though, that bug is fixed, and everything works fine without the need to publish the remote service (wsdl) to the SR and to subsequently query it.
    Nick

  • Problem with ADF security and task flow calls

    Hi.
    I am using JDeveloper 11.1.2.0.0.
    I encountered a problem when tried to apply ADF security to my application.
    The way to reproduce the problem:
    1. Create new Fusion Web Application;
    2. Import Business Components from Tables from any existing schema and add at least one table to the ApplicationModule.
    3. Create "welcome page" (for instance, welcome.jsf). Add a button with fixed action outcome "test".
    4. Create test page, for instance, test.jsf. Drag and drop any view object from Data Controls onto the page and create a form with navigation controls. Add a button with fixed action outcome "return".
    5. Create bounded task flow, name it "test", drag and drop our test page on it - the page will be the default activity. Add a task flow return activity. Add a control flow case from the default view activity to the return activity, set From Outcome property to "return". So our return button should cause the task flow to exit.
    6. Open adfc-config.xml in diagram mode and place our welcome page on it. Then drag and drop the test task flow to create a task flow call activity. Add a control flow case from welcome page to task flow call activity, set the From Outcome property to "test". So our test button should call the test task flow.
    7. Configure application to run the unbounded task flow starting with Welcome view activity.
    At this point all works as expected: when application runs, the welcome page is displayed with test button. Pressing the test button results in displaying the test page, return button leads back to the welcome page.
    Now let's configure ADF Security.
    Run the ADF Security configuration wizard, choose ADF Authentication and Authorization.
    On the second page select Form-Based Authentication, check the Generate Default Pages flag.
    On the third page choose No Automatic Grants.
    On the next page keep the Redirect Upon Successful Authentication unchecked. Press Finish.
    Open jazn-data.xml to configure roles, users and resource grants:
    1. Create application role test-role.
    2. Grant the test-role privileges to view the test task flow.
    3. Create user and grant him the test-role.
    Now we have the public available welcome page and the test page with restricted access.
    When application runs, the welcome page is displayed as expected. Pressing the test button redirect us to auto-generated login page. After successful authorization the test page is displayed. But nothing happens if we click now the return button for the first time. When we click the return button once more, the application crushes with Error-500 and message "Target Unreachable, identifier 'bindings' resolved to null". The exact error trace depends on UI control bindings, but looks like this:
    javax.el.PropertyNotFoundException: //C:/Users/DUDKIN/AppData/Roaming/JDeveloper/system11.1.2.0.38.60.17/o.j2ee/drs/Test1/ViewControllerWebApp.war/test.jsf @10,120 value="#{bindings.Id.inputValue}": Target Unreachable, identifier 'bindings' resolved to null
         at com.sun.faces.facelets.el.TagValueExpression.isReadOnly(TagValueExpression.java:122)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer._getUncachedReadOnly(EditableValueRenderer.java:476)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.getReadOnly(EditableValueRenderer.java:390)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.wasSubmitted(EditableValueRenderer.java:345)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.decodeInternal(EditableValueRenderer.java:116)
         at oracle.adfinternal.view.faces.renderkit.rich.LabeledInputRenderer.decodeInternal(LabeledInputRenderer.java:56)
         at oracle.adf.view.rich.render.RichRenderer.decode(RichRenderer.java:342)
         at org.apache.myfaces.trinidad.render.CoreRenderer.decode(CoreRenderer.java:274)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.__rendererDecode(UIXComponentBase.java:1324)
    (the rest of lines skipped).
    Any suggestions?
    Edited by: user13307311 on Apr 16, 2013 11:39 PM

    @Lovin_JV_941794
    The welcome page is public available since it does not have appropriate PageDef file.
    Login page comes not from the welcome page, it comes after attempt to access the test page. So after the login succeeded the test page appears, because redirect to welcome page after successful login is not configured. I do not need to return the welcome page at this moment, I need to go to the test page.
    It seems the task flow call stack to be destroyed after redirect to login page.
    Edited by: user13307311 on Apr 17, 2013 12:45 AM

  • Task flow-call  as a Dialog with inline-popup issue JDev 11.1.1.2.0

    I have a very serious issue with task flow-call running as a Dialog with inline-popup
    have bunch of data driven table components pointing to pageDefs with Iterators
    the problem is, the dialog comes first with nothing in it (blank) and it takes 3-5 seconds to fetch all views,
    this is useless, there is no option to control taskflow-call activation , like you do for af:region
    For reference : I am talking about this : http://jobinesh.blogspot.com/2010/08/refresh-parent-view-when-in-line-popup.html
    Download the workspace , connect as HR Schema and you will see what I am talking about
    looks really dumb, it would make sense to show dialog with data all at once, rarther than looking at blank screen to wait for the data to show up
    Edited by: user626222 on Sep 20, 2010 8:57 AM
    can I call this a bug?
    Edited by: user626222 on Sep 20, 2010 1:58 PM
    sometimes I wonder if anyone tested this, as soon as you have some data driven components on your page, you get all sorts of problems in ADF
    But something simple, Adf client side invokes the Dialog as a popup first, and then it thinks oh ya I get massive pageDef to load, so end-user customer will stare at the blank screen for 10 secs , hoping that something will come up or program is crashed
    Well, I am afraid to say you lost your customer :(
    Edited by: user626222 on Sep 20, 2010 2:29 PM
    Edited by: user626222 on Sep 20, 2010 2:35 PM
    Edited by: user626222 on Sep 20, 2010 2:35 PM
    Edited by: user626222 on Sep 20, 2010 2:36 PM

    ok, knowing this fact, I want to show some kind of status indicator during the wait time.
    Unfortunately, putting af:statusIndicator does not work untill after entire page loads
    <?xml version="1.0" ?>
    <?Adf-Rich-Response-Type ?>
    <content action="/EmpApp/faces/displayEmployees.jspx?_adf.ctrl-state=5plp6ahes_72">
    <fragment><![CDATA[<span id="f1::postscript"><input type="hidden" name="javax.faces.ViewState" value="!-e8tyzkiuc"></span>]]>
    </fragment>
    <fragment>
    <![CDATA[<div id="afr::DlgSrvPopupCtnr::content" style="display:none"><div id="j_id12" style="display:none">
    <div style="top:auto;right:auto;left:auto;bottom:auto;width:auto;height:auto;position:relative;" id="j_id12::content">
    <div id="j_id13" class="x142"><div class="x157" _afrPanelWindowBackground="1"></div>
    <div class="x157" _afrPanelWindowBackground="1"></div><div class="x157" _afrPanelWindowBackground="1">
    </div><div class="x157" _afrPanelWindowBackground="1"></div>
    <table cellpadding="0" cellspacing="0" border="0" summary="" class="x146">
    <tr>
    <td class="p_AFResizable x148" id="j_id13::_hse"> </td>
    <td class="p_AFResizable x14a" id="j_id13::_hce"><table cellpadding="0" cellspacing="0" border="0" width="100%" summary=""><tr>
    <td><div id="j_id13::_ticn" class="x151"><img src="/EmpApp/afr/task_flow_definition.png" alt=""></div></td><td class="x14e" id="j_id13::tb">
    <div id="j_id13::_ttxt" class="xz8"></div></td><td>
    <div class="x153"><a href="#" onclick="return false" class="xz7" id="j_id13::close" title="Close"></a></div></td></tr></table></td><td class="p_AFResizable x14c" id="j_id13::_hee"> </td></tr><tr><td class="p_AFResizable x14j" id="j_id13::_cse"> </td>
    <td class="p_AFResizable x14g" id="j_id13::contentContainer">
    <div id="j_id13::_ccntr" class="x14h" style="width:700px;height:430px;position:relative;overflow:hidden;">
    <div id="j_id14" class="xne" style="position:absolute;width:auto;height:auto;top:0px;left:0px;bottom:0px;right:0px">
    <iframe _src="javascript:'<html&gt;<head&gt;<title/&gt;</head&gt;
    <body/&gt;
    </html&gt;'" src="javascript:''" frameborder="0" style="position:absolute;width:100%;height:100%">
    </iframe>
    </div></div></td><td class="p_AFResizable x14l" id="j_id13::_cee"> </td></tr><tr><td class="p_AFResizable x14n" id="j_id13::_fse"><div></div></td>
    <td class="p_AFResizable x14p" id="j_id13::_fce">
    <table cellpadding="0" cellspacing="0" border="0" width="100%" summary=""><tr>
    <td class="p_AFResizable x14u" id="j_id13::_fcc"></td><td align="left" valign="bottom"><div class="p_AFResizable x14y"><a tabIndex="-1" class="x14w" id="j_id13::_ree" title="Resize"></a></div></td></tr></table></td><td class="p_AFResizable x14r" id="j_id13::_fee">
    <div></div></td>
    </tr></table></div></div></div></div>]]>
    </fragment>
    <script-library>/EmpApp/afr/partition/gecko/default/opt/frame-SHEPHERD-PS1-9296.js</script-library>
    This is how it launches the taskflow-call, so there is no way to control this behaviour from the calling taskflow's jspx, feels very closed system,why ADF is not making this behavior Open by some kind of client listener,
    <script>
    <![CDATA[AdfDhtmlLookAndFeel.addSkinProperties({"AFPopupSelectorFooterStart":"x11b","AFPopupSelectorHeader":"x114","af|panelWindow-tr-open-animation-duration":"300","AFPopupSelectorHeaderStart":"x115","AFPopupSelectorContentEnd":"x119","AFPopupSelectorContent":"x117","af|panelWindow::resize-ghost":"x144","AFPopupSelectorContentStart":"x118","AFPopupSelectorFooter":"x11a","AFPopupSelectorFooterEnd":"x11c","AFPopupSelectorHeaderEnd":"x116","AFPopupSelector":"x110",".AFPopupSelector-tr-open-animation-duration":"200"});AdfPage.PAGE.addComponents(new AdfRichPopup('j_id12',{'_dialogURL':'/EmpApp/faces/adf.dialog-request?_adf.ctrl-state=5plp6ahes_76&_rtrnId=1285074907739&__ADFvDlg__=true','_inlineFrameId':'j_id14','_launchId':'r1:0:cb2','_panelWindowId':'j_id13','_rtnId':'1285074907739','contentDelivery':'immediate'}),new AdfRichPanelWindow('j_id13',{'modal':true,'resize':'on','stretchChildren':'first'}),new AdfRichInlineFrame('j_id14',{'source':'javascript:\'\x3chtml>\x3chead>\x3ctitle/>\x3c/head>\x3cbody/>\x3c/html>\''}));AdfPage.PAGE.clearMessages();AdfPage.PAGE.clearSubtreeMessages('r1');]]>
    </script>
    AdfDhtmlRichDialogService.getInstance().launchInline there is no way for me to put af:statusindicator for the wait time using this way
    <script>AdfDhtmlRichDialogService.getInstance().launchInline('j_id12');*</script>
    </content>

  • How to know which stage has been completed in Human task flow.

    Hi All,
    I have one human task flow where there is three participants. Participant A, B and C and all are in sequence.
    When User B approves the task, i need to do some business logic. when user B approves the task, it will be assigned to User C. I have defined call back events. There i can use task assigned condition to do my business logic.
    My question is that how i can get to know that Task assigned to user C. Because it is a call back event and will be triggered when it will be assigned to A or B. I have tried to user the function previousOutcomeUpdatedBy to check whether it previous user was B or not. but in my case it is coming as workflowsystem.
    instead of User B it is using workflowsystem
    User:workflowsystem; State:OUTCOME_UPDATED; Outcome:CONFIRM
    I am not aware, why workflow system is coming in picture.
    do any one idea, how to solve this use case.
    Regards,
    Sunil

    You can get the status from back end tables.
    Check in SOA INFRA tables. Below is the list of human work flow tables.
    WFTASK
    WFTASK_TL
    WFTASKHISTORY
    WFTASKHISTORY_TL
    WFCOMMENTS
    WFMESSAGEATTRIBUTE
    WFATTACHMENT
    WFASSIGNEE
    WFREVIEWER
    WFCOLLECTIONTARGET
    WFROUTINGSLIP
    WFNOTIFICATION
    WFNOTIFICATIONSTATUS
    BPELNOTIFICATION
    BPELNOTIFICATION_FILTERMSGS
    BPELNOTIFICATION_INVALADDRS
    WFTASKMETADATA
    WFATTRIBUTELABELMAP
    WFATTRIBUTELABELUSAGE
    WFUSERVACATION
    BPM_PRESENTATION
    BPM_PRESENTATION_GRANT
    WFUSERTASKVIEW
    WFUSERTASKVIEWGRANT
    WFUSERPREFERENCE
    BPM_USERAPPLICATIONDATA
    BPM_USERAPPLICATIONDATA_GRANT
    WFRULEDICTIONARY
    WFTASKDISPLAY
    WFTASKTIMER
    WFNOTIFICATIONMESSAGES
    WFTASKERROR
    WFHEADERPROPS
    WFCERTAUTHORITY
    WFCERTIFICATEREVOKED
    WFCERTIFICATE
    WFEVIDENCE
    WFTASKASSIGNMENTSTATISTIC
    WFTASKSEQUENCECHANGES
    WFTASKAGGREGATION
    WFAPPROVALGROUPS
    WFAPPROVALGROUPMEMBERS
    Thanks,
    Vijay

  • Human Task Flow conflict on Data Controls generation

    Hi, I have two distinct human tasks in one process. When I use new-> JSF-> ADF task flow from Human task to create the task flow for the second task to the same public-html/web-INF folder as the first one, after the generation, the data control for the first human task flow will disappear from the data control window.
    I am trying to rebuid my old app into a new app. Although I can create two distinct human task flows in my old app, no luck in the new app. Both apps use JDev 11.1.1.5 and on the same machine. Anybody can give me some hints on the issue?
    Thank you

    Juan C,
    I use JDeveloper 11g Release 1.
    May be I didn't explained my question correctly.
    taskdetails1 is creating, and in Data Controls I have objects of my BPM Human Task Payload.
    But in that file "PackageCreation.task" in source I can't find any link to instantly created TaskFlow.xml in my UI project.
    So, I have
    NEW project "PackageCreationUI" with PackageCreation_TaskFlow.xml in it (and TaskDetails1 file too).
    AND Did't Changed PackageCreation.task in BPM Project.
    If I use *"BPM form creation wizard"*, after creating project and TaskFlow in it I see Changes in PackageCreation.task in BPM Project, something like that:
    <taskFlowFileLocation>file:/C:/JDeveloper/mywork/testApp/PackageCreationUI/public_html/WEB-INF/PackageCreation_TaskFlow.xml</taskFlowFileLocation>

  • Customization of Human tasks the BPM Worklist App with ADF App

    Hi All,
    We are building a custom ADF application which aims to combine several business process human tasks to a unified interface.
    And how to integrate the Human Task Flow BPM Worklist to my ADF App.
    Otherthan that
    To the BPM Worklist App we want to do customizations also like
    1.Want to customize to apply our own custom skins to customize banner logo, title to the BPM Human Task Flow App.......
    2.And based on the logged in user/role we wanted to restrict the features of the Work List App.
    Say for Example should not provide the Facility to Add New Page if the logged in user is not an Admin, like wise no provision to add or modify or delete the Worklist Views like that...
    How to get control the App based on User/Role
    Any help or pointers would be appreciated!
    I have ADF Experience from projects Using JDeveloper 11.1.1.5.
    But, for me this is the first BPM case.
    Renuka

    Hi Renuka,
    There are basically two ways to create an ADF UI for a BPM Task:
    1. Generate it from the task
    2. Create a ADF Taskflow based on Human Workflow Task
    Since I tell this by heart, I might be slightly wrong in the terms.
    You probably want to try the second option. It is accessible from the "New Gallery". You'll have to provide the Human Task from the BPM project, but then you can build up the ADF Taskflow by your self, based on the customizations of the rest of your application.
    Should not be rocket science for someone with ADF11g experience. Since it is not my dayly job, I need to figure it out every time again ;). But I did it in the past and it wasn't so hard.
    Regards,
    Martien

  • Unbounded task flow call from another ADF application

    Hi,
    I have two different ADF applications having unbounded taskFlow , and requirement is to call that task flow from another one with some parameters .
    how to do that , please .
    Regards,
    Parvez

    Thanks Ashish, I study these documents and  acknowledge.
    Parvez

  • Participate in the same DB Transaction within Human Task Flow ADF screen.

    Functionality:-
    I have a ADF workflow screen generated from a Human Task flow, and for the business reason I run through the ADF Iterator and get the attribute values and persist within a table using an Application Module.
    I am using the Application Module, and creating as below:-
    String amDef = "model.TestAM";
    String config = "AppModuleLocal";
    TestAM service = (TestAM)Configuration.createRootApplicationModule(amDef,config);
    Now, the issue is when I call the saving mechanism within the above AM client interface, it expects a commit, and this transaction doesnt participate in the same transaction as workflow process, so can anyone let me know how to get hold of the transaction handler and make this persistence to participate within the same one workflow transaction.
    Cheers,
    Saran.

    Hi,
    don't see how the transaction can be shared between the two. Any reason you don't use a DataControl for the ADF BC access and instead use client code creating a root application module?
    Frank

  • ER : 10338256 : AF:ACTIVEOUTPUTTEXT IN TASK-FLOW-CALL DOES NOT ACTIVELY CHA

    hi
    In the context of Re: Task Flow API for programmatically retrieving parameters? and "The official ADF EMG bug and ER thread", this forum thread is Re: Task Flow API for programmatically retrieving parameters? to get your vote or feedback on one specific ER:
    - 10338256, "AF:ACTIVEOUTPUTTEXT IN TASK-FLOW-CALL DOES NOT ACTIVELY CHANGE"
    Among other bugs, it was created in the context of forum thread "show server time on a page (automatically updating)" ...
    at show server time on a page (automatically updating)
    ... where part of the feedback from Oracle support (SR 3-2369020191) was
    "... we have the limitation in ADS today that we can't add an ADS component to a page through a PPR request. For example, a task-flow-call, or a simple button click with the attribute partialSubmit=true ..."
    (But, regardless the intent of this forum thread, feel free anytime to pursue other means to attract the attention of Oracle to a specific ER. Possibly by creating a service request referring to an ER, or by any other way you see fit.)
    many thanks
    Jan Vervecken

    +1

  • Avoiding request scope bean clashes for task flow calls

    Hi,
    I have two task flows, Tf1 calls Tf2 using a task flow call activity. The structures of the task flows are as follows:
    Tf1
      Managed Bean: TfBean, request scope
        class Tf1Bean
          has property goTf2Button
      View: View1
        Button bound to #{TfBean.goTf2Button}
          Action -> task flow call to Tf2
    Tf2
      Managed Bean: TfBean, request scope
        class Tf2Bean
          has property testButton
      View: View2
        Button bound to #{TfBean.testButton}
    As you can see both have a request scope bean called TfBean but these are different classes in each. The bean classes have different properties for binding the components on the two pages.
    When I click the button in View1 to navigate I get an error telling me that class Tf1Bean does not have the property testButton. Clearly Tf2Bean is not being instantiated as TfBean already exists for the request.
    I'm guessing this is expected behaviour and it seems logical.
    My question however is what would be good standards or practices to avoid this?
    One way would be a naming convention, however what if I am consuming Tf2 from a library? In this case it would ideally work as a black box and I should not be concerned about it's implementation, specifically names chosen for internal managed beans. Even if it was not a problem initially, the developer of the task flow could add or change the name of a request scope bean introducing a conflict at a later stage.
    Thanks,
    Kevin

    Hi Frank,
    Good to meet you at UKOUG Tech13 yesterday. I changed my test case from request scope to backing bean scope. Unfortunately I still get the same error:
    <RichExceptionHandler> <_logUnhandledException> ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase RENDER_RESPONSE 6
    javax.faces.FacesException: javax.el.PropertyNotFoundException: The class 'yyy.view.Tf1Bean' does not have the property 'testButton'.
      at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(ApplicationImpl.java:1900)
      at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:446)
      at javax.faces.webapp.UIComponentELTag.createComponent(UIComponentELTag.java:222)
      at javax.faces.webapp.UIComponentClassicTagBase.createChild(UIComponentClassicTagBase.java:506)
      at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:744)
      at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1311)
      at org.apache.myfaces.trinidad.webapp.UIXComponentELTag.doStartTag(UIXComponentELTag.java:67)
      at oracle.adfinternal.view.faces.unified.taglib.nav.UnifiedCommandButtonTag.doStartTag(UnifiedCommandButtonTag.java:51)
    ...etc.
    What I think is happening, please correct me if I'm wrong...
    Running Tf1, page View1 is displayed.
    Clicking the button on View1 initiates a request and an instance of Tf1Bean is instantiated for the managed bean named TfBean.
    During the request navigation occurs to Tf2 and hence page View2.
    View2 needs a property in TfBean called testButton.
    There is already a managed bean instantiated for this request called TfBean, however this is of class Tf1Bean and does not have the property.
    I have a simple workspace showing this if you want me to send it to you. I am using 11.1.2.4 by the way.
    Thanks,
    Kevin

Maybe you are looking for