Binding container lifespan

Can someone explain or point me to a decent description of the lifecycle of the ADFm binding container?
For example, if I have variables defined within the "variables" variableIterator of a pageDef when do these get initialized and destroyed?
Is there similarity to one of the memory scopes (request for example)?

Hi,
its by request. However, if you load the page then the variable iterator is filled with values during the init context phase, which is after retsore view. So the variable iterator should not be empty if it uses EL to access its values
Frank
Edited by: Frank Nimphius on Jan 7, 2010 4:24 PM

Similar Messages

  • Programmed Binding (Container IF)

    Hello Everyone,
    I was experimenting on Programmed Binding (Container IF) but I can't seem to make it work. I have had tried to refer the codes from the Programmed Binding (BOR Container) but to no avail.
    Is there anyone who can guide me on this?

    hi Liew
    You can use programmed binding in a binding instruction. You can use programmed binding to create more complex assignments, such as:
    ·        Perform calculations or checks on container elements before assignment
    ·        Combine two or more container elements before assignment
    You can implement a programmed binding as an ABAP class or a function module
    You can use an ABAP class to implement the Container ® Container and Expression ® Expression bindings.
    A binding that is implemented as an ABAP class is displayed in the list of binding statements as an enhancement and is visible in all Workflows. This type of ABAP class is therefore particularly suitable for making company-wide enhancements.
    An enhancement such as this is completely integrated in the binding editor. You can implement you own checks for the class and choose the names and symbols to be used to display the enhancement in the binding editor.
    Function module
    You can use a function module to implement the Container ® Container binding.
    A function module can use the BOR container interface or the container interface
    The BOR container interface supports compatibility reasons. It is therefore advisable to use the container interface for new function modules for the following reasons:
    ·         The container interface has no restrictions with regard to data types. The BOR container does not support the following data types: REF TO, STRING, XSTRING, fields that are longer than 255 characters.
    ·         No data type conversions are required for the container interface. This improves performance.
    for more info please go through the following link
    http://help.sap.com/saphelp_nw2004s/helpdata/en/7c/b82bcd7b9611d194b80000e82dec10/content.htm
    guess it will surely help
    regards
    ashish

  • Programmed Binding (Container IF) - how to access source container data

    Hi,
    I have created a programmed binding (container IF) using a function module based on SWA_BINDING_TEMPLATE.
    I want to access an element (Meldung) based on BUS2078 (QM notification) from my source container and then retrieve the material from this element.
    When the element is a simple element such as WfInitiator for example I cant retrieve the value using the get method on the source container but when it is a complex element such as a BOR object it does not work. How can I retrieve such data.
    Thanks for your help,
    Emmanuel

    I finally found the answer last week, here is how I have done :
        DATA : l_matnr TYPE matnr.
        DATA : l_string TYPE string.
        DATA: lcx_container TYPE REF TO cx_swf_cnt_container.
        DATA: b_meldung TYPE swf_bor_object.
        TRY.
            CALL METHOD source_container->get
              EXPORTING
                name  = 'Meldung'
              IMPORTING
                value = b_meldung.
            swf_get_property b_meldung 'Material' l_matnr.
          CATCH cx_swf_cnt_elem_not_found .
            l_string = 'cx_swf_cnt_elem_not_found'.
          CATCH cx_swf_cnt_elem_type_conflict .
            l_string = 'cx_swf_cnt_elem_type_conflict'.
          CATCH cx_swf_cnt_unit_type_conflict .
            l_string = 'cx_swf_cnt_unit_type_conflict'.
          CATCH cx_swf_cnt_container INTO lcx_container.
            l_string = lcx_container->t100_msg.
        ENDTRY.
    Emmanuel

  • Binding containe gets reset on button click ?

    Hi All
    In my page i am calling a method of AMIMpl class :
        public void refreshEmpTable(){
          String pRefresh = "Y";
          requeryViewObjectWithBindVariable(getEmp(), "bRefresh", pRefresh);
    and
        private void requeryViewObjectWithBindVariable(ViewObjectImpl pViewObjectImpl,
                                                       String pVariableName,
                                                       String pVariableValue) {
            ViewObjectImpl vo = pViewObjectImpl;
            vo.setNamedWhereClauseParam(pVariableName, pVariableValue);
            vo.executeQuery();
        }And i can see the following log
    <DebugDiagnostic> <print> [12497] DBG: afterActionPerformed :refreshEmpTable
    <ADFLogger> <begin> Refreshing binding container
    <DCBindingContainer> <internalRefreshControl> [12498] **** refreshControl() for BindingContainer :com_xyz_abc_ui_flow_om_omf_omf_prepareSessionSessionPageDef_WEB_INF_com_xyz_abc_ui_flow_om_om_xml_omf
    prepareSession() - default method of the taskFlow
    The button that triggers the refreshEmpTable() of impl class has partial submit as true. What i can see here is it is resetting the task flow. Can some some give a clue as to what i have done wrong here.
    thnks,
    JDev 11.1.1.4
    Edited by: in the line of fire on Jun 22, 2011 5:03 PM
    Edited by: in the line of fire on Jun 23, 2011 11:52 AM

    <ViewObject xmlns="http://xmlns.oracle.com/bc4j" Name="DeptView" Version="11.1.1.59.23" AutoRefresh="true"
    set this value to false if its there... in any of your VO

  • Do I need to cleanup runtime binding container and iterators?

    If I create a runtime binding container and iterator in a JSF session bean as follows:
    FacesContext facesContext = FacesContext.getCurrentInstance();
    ValueBinding valueBinding = facesContext.getApplication().createValueBinding("#{data}");
    BindingContext bindingContext = (BindingContext)valueBinding.getValue(facesContext);
    // To create JUIteratorBinding, we need the following objects
    DCDataControl dataControl = bindingContext.findDataControl("MyDataControlName");
    ApplicationModule appModule = (ApplicationModule)dataControl.getDataProvider();
    DCBindingContainer bindingContainer = new DCBindingContainer();
    // Create dynamic iterator.  Need to set bindingContainer otherwise executeQuery throws exception
    JUIteratorBinding iterator = new JUIteratorBinding(bindingContext, dataControlName, "MyViewObjectName", "MyIteratorName", -1);
    iterator.setBindingContainer(bindingContainer);....do I have to later clean down the iterator and binding container from the data control to release the memory (and what calls do I need to make), or once the objects fall out of scope in my code are they marked for GC?
    CM.
    PS. JDev 10.1.3.1, ADF BC and JSF

    Hi Steve, thanks for the follow up.
    I'm coding a dynamic menu <af:page> control that maps to the MenuTreeModelAdapter (session bean) as detailed in the JDev 4GL/Forms guide.
    I've made a change that instead of loading the menu items from the hardcoded faces-config.xml file, they're actually sourced from the database via the code above, which is placed in the MenuTreeModelAdapter constructor. As the <af:page> tag exists on a number of pages, and thus the MenuTreeModelAdapter may be instantiated for the first time from a number of different locations, I can't hard-code the binding container or iterator into any single pageDef file. Thus I dynamically construct it in the constructor when the session bean is created for each user. I require a session bean as the menu items are different for each user.
    However I'm concerned once I've created the binding container and iterator, that even though the session bean may become invalidated, the 2 binding layer constructs may remain, consuming resources.
    Thanks for your assistance.
    CM.

  • About binding container

    Hi
    I am using jdev 11.1.1.5.0
    I created a fragment page and bounded task flow.
    which have few bindings
    I drop the task flow as region on a jspx page.
    On the flow I drop a method call and define that method in backing of fragment.
    Now I define some functionality in that method to perform some task before page load
    I am using binding container in that method but it returns null .
    there is any solution to solve this problem...?
    Thanks.

    You need to create a pageDef/bindings file for that method call, and then the associated bindings you want to manipulate. To create the pageDef file right click on the method call and select the Create Page Definitions option.
    CM.

  • Event binding (Programmed Binding (Container IF))

    Hello WF gurus !
    I am currenlty trying to trace and debug a WF run and I am having difficulty to understand the binding mechanism of a "Wait for event" step in my workflow.  Here is the story:  Through its execution run, the WF encountered two "Wait for event" step based on the same BOR-Event (ex: BOR = ZISPROCES1 - Event = ABANDON ).  The first occurence is directly is the WF (we will call this WF: WF1) and the 2nd occurence is in a sub-workflow (WF2).  The 2 work items for those 2 "wait for events" steps were created in March 2010, obviously waiting for the same event to occur.  The ABANDON event occured in June 2010 trigerring the execution of both work items waiting for this event.
    When I look at the binding configuration of these "Wait for event" step (Popup screen: Display Binding From Event), I see the following:
    - Under "Workflow" column: Programmed Binding (Container IF)
    - Under "Event 'ABANDON' column: ZCONTAINER_BINDING_MAIL_ISIS
    When I click on the "Programmed Binding (Container IF)" buton, i get a popup screen titled: "Binding Instruction Display" with the following config:
    > Binding Instruction: Container --> Container: Programmed Binding (Container IF)
    > Exit Function Module: ZCONTAINER_BINDING_MAIL_ISIS
    When I look ath the FM ZCONTAINER_BINDING_MAIL_ISIS, I see that it uses three (3) import parameters:
    DATAFLOW_EVENT   TYPE SWA_DAFLOW
    SOURCE_CONTAINER TYPE SWFPARACNT
    TARGET_CONTAINER TYPE SWFPARACNT
    Assumption: Currently, from what I understand, the "Wait for event" step adds an object called "DELETOR" in the container of the workflow it belongs meaning that when the event will occur, the work item associated to these "Wait for event" steps will process and I should expect to have an object called "DELETOR" in the conainer of WF1 and WF2.
    The problem: When I look at my WF log using TCode SWI6, and I look at the container data for each step following the "Wait for event" step (SEND MAIL step), I notice that the WF1's "Send Mail" step container contains an instance of the object called "DELETOR" with data in it.  WF2's "Send MaiL" step also contains an object called "DELETOR" but with mention <No Instance> and I don't understand why...
    QUESTIONS:
    - Where can I see what are the values passed to the FM import parameters ?
    - Does anyone have an idea why in WF1's container, object "DELETOR" is instanciated and holds values and in WF2's container, there is an object "DELETOR" but is not instanciated.
    Edited by: PAQUEJO on Dec 2, 2010 10:04 PM

    Here is the code of FM ZCONTAINER_BINDING_MAIL_ISIS
    FUNCTION zcontainer_binding_mail_isis.
    *"*"Interface locale :
    *"  IMPORTING
    *"     VALUE(DATAFLOW_EVENT) TYPE  SWA_DAFLOW
    *"     VALUE(SOURCE_CONTAINER) TYPE  SWFPARACNT
    *"     VALUE(TARGET_CONTAINER) TYPE  SWFPARACNT
    *"  EXCEPTIONS
    *"      BINDING_ERROR
      INCLUDE <cntn01>.     " macros for accessing BOR objects and container
      INCLUDE <swfcntn01>.  " macros for accessing the new ABAP-OO-container
      TYPE-POOLS: swfbn.
      DATA: my_integer    TYPE        i.
      DATA: lcx_container TYPE REF TO cx_swf_cnt_container,
            l_msg         TYPE        swf_t100ms.
      DATA : l_creator(14).
      DATA : lo_usr01 TYPE swf_bor_object,
             lo_zis   type swf_bor_object.
      IF dataflow_event = swfbn_dataflow_export. " 'E'
    **** 'EXPORT' point of time. This could be:
    **** - workflow container to workitem container (before method call)
    **** - event container to workflow container (event receive or wf start)
    **** - workflow container to role container (before role resolution)
    **** always move data from source to target container
        TRY.
            CALL METHOD source_container->get
              EXPORTING
                name  = '_EVT_CREATOR'                          "#EC NOTEXT
              IMPORTING
                value = l_creator.
    *        ADD 17 TO my_integer.
            swf_create_object lo_usr01 'USR01' l_creator+2.
            CALL METHOD target_container->set
              EXPORTING
                name  = 'DELETOR'                               "#EC NOTEXT
                value = lo_usr01.
          CATCH cx_swf_cnt_container INTO lcx_container.
            l_msg = lcx_container->t100_msg.
            MESSAGE ID l_msg-msgid TYPE l_msg-msgty NUMBER l_msg-msgno
                    WITH l_msg-msgv1 l_msg-msgv2 l_msg-msgv3 l_msg-msgv4
              RAISING binding_error.
        ENDTRY.
      ELSEIF dataflow_event = swfbn_dataflow_import. " 'I'
    **** 'IMPORT' point of time. This could be:
    **** - from workitem container to workflow container (after method exec)
    **** - from workflow container to event container to (raise event)
    **** always move data from source to target container
        TRY.
            CALL METHOD source_container->get
              EXPORTING
                name  = '_EVT_CREATOR'                          "#EC NOTEXT
              IMPORTING
                value = l_creator.
    *        ADD 17 TO my_integer.
            swf_create_object lo_usr01 'USR01' l_creator+2.
            CALL METHOD target_container->set
              EXPORTING
                name  = 'DELETOR'                               "#EC NOTEXT
                value = lo_usr01.
            CALL METHOD source_container->get
              EXPORTING
                name  = '_EVT_OBJECT'                          "#EC NOTEXT
              IMPORTING
                value = lo_zis.
            CALL METHOD target_container->set
              EXPORTING
                name  = '_WI_OBJECT_ID'                               "#EC NOTEXT
                value = lo_zis.
          CATCH cx_swf_cnt_container INTO lcx_container.
            l_msg = lcx_container->t100_msg.
            MESSAGE ID l_msg-msgid TYPE l_msg-msgty NUMBER l_msg-msgno
                    WITH l_msg-msgv1 l_msg-msgv2 l_msg-msgv3 l_msg-msgv4
              RAISING binding_error.
        ENDTRY.
      ENDIF.
    ENDFUNCTION.

  • BackingBean Method call from Task flow isnot getting  the Binding Container

    Hi All,
    I am trying to call a backing bean method from a task flow using method call activity, where my page belongs to.
    In this method I am trying to get the binding container,
          DCBindingContainer dcbindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
          OperationBinding operationCreate = dcbindings.getOperationBinding("CreateInsert"); but it is evaluating to null and throwing null pointer exception.
    javax.el.ELException: java.lang.NullPointerException
         at com.sun.el.parser.AstValue.invoke(AstValue.java:161)
         at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
         at oracle.adf.controller.internal.util.ELInterfaceImpl.invokeMethod(ELInterfaceImpl.java:168)
         at oracle.adfinternal.controller.activity.MethodCallActivityLogic.execute(MethodCallActivityLogic.java:161)
         at oracle.adfinternal.controller.engine.ControlFlowEngine.executeActivity(ControlFlowEngine.java:989)
         at oracle.adfinternal.controller.engine.ControlFlowEngine.doRouting(ControlFlowEngine.java:878)
         at oracle.adfinternal.controller.engine.ControlFlowEngine.doRouting(ControlFlowEngine.java:777)
         at oracle.adfinternal.controller.engine.ControlFlowEngine.routeFromActivity(ControlFlowEngine.java:551)
         at oracle.adfinternal.controller.engine.ControlFlowEngine.performControlFlow(ControlFlowEngine.java:147)
         at oracle.adfinternal.controller.application.NavigationHandlerImpl.handleAdfcNavigation(NavigationHandlerImpl.java:109)
         at oracle.adfinternal.controller.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:78)
         at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:130)
         at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:190)
         at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)I guess, I miss something in this process, but no idea what it is ...!!!!
    Any help will be appreciated.
    I am using Studio Edition Version 11.1.1.3.0
    Ranjith

    Hi Arun,
    In my task flow i am calling a jspx page as a popup,
    through my jspx page I can do all these operations,
    but the problem is when I am trying to call a method written in the Backing bean of that page, at that time only the method is not getting the bindings.
    Create insert operation is there in the bindings....
    Ranjith

  • How to get an external binding container

    Hi friends.
    I'm migrating now to jdeveloper 11g
    Can anybody tell me how to get a reference to an external binding container. i found the decision:
         FacesContext fctx = FacesContext.getCurrentInstance();
                     ELContext elc = fctx.getELContext();
                     ValueExpression vle = fctx.getApplication().getExpressionFactory().createValueExpression(elc,"#{bindings}",DCBindingContainer.class);
                     DCBindingContainer bc = (DCBindingContainer)vle.getValue(elc);
                     if (bc == null) {
                         return;
                     BindingContext ctx = bc.getBindingContext();
                     DCBindingContainer dcb = ctx.findBindingContainer("jurDialogPageDef"); but it never works!!!!
    bc is always null.
    neither simplier the approach works
            BindingContext _ctx=BindingContext.getCurrent();
            DCBindingContainer dcb = (DCBindingContainer)_ctx.findBindingContainer("jurDialogPageDef");           
            DCIteratorBinding jurIter = (DCIteratorBinding) dcb.get ("JurPersonView1Iterator"); dcb is null though the jurDialogPageDef.xml does exist.
    Thanks in advance. Alex.

    Hi,
    I hope my previous post below will be helpful:
    Re: Execute query's from a bean
    Regards,
    Pino

  • Error because of wrong page definition/binding container

    Hello -
    (Using JDev 10.1.3 JSF w/ADF BC)
    I'm running into a weird "issue" involving setting up the binding container.
    I have one page that has a table of data. I select a row and hit a button to navigate to a page with an edit form.
    In the page definition (for the page with the edit form), I list a managed bean as the ControllerClass. (I use the bean as a PagePhaseListener.) I've also added bindings (#{bindings}) as a managed property for that bean.
    In the managed bean I grab a hold of an attribute binding from the binding container in my beforePhase method (when the phase id is Lifecycle.PREPARE_RENDER_ID). However, I was always getting NULL for the attribute binding (which then caused a null pointer exception).
    When I paused the execution in the debugger, it looks like the binding container was still set up for the previous page (the page with the table in it). Opening up the bindings variable, I found a member mBindingContainerDef which had members mObjName and mFullName which seemed to indicate that the binding container was the one for the previous page, NOT the page with my edit form. (mFullName had the full name and classpath for the first page's page definition.)
    Why is this? I only indicate that the bean is a ControllerClass in the page definition for the 2nd page --> so shouldn't that be the binding container in effect when the PagePhaseListener methods are executed?
    -- Scott

    Scott,
    I assume that your PhaseListener doesn'tdistinguish between the actual navigation and the JSF postback that is issued to the same page. In your case I assume that the PhaseListener is invoked on postback and thus ADF Faces points to the "old pagedef" file.
    Frank

  • WorkFlow - Binding / Container Operation

    Hi WF Gurus
    I am creating a Sale Order Change Start Event & want to collect a field (KNVV-KLABC) i.e. Customer ABC Class of that Sold-to-party of that sales order.
    Is it possible through binding or container operation.
    please give steps in details.
    Max. reward for right ans.

    You can do it by automatic binding. The object of SO changing is under the element EvtObject of event container.
    FYI.[http://help.sap.com/saphelp_nw70/helpdata/en/c5/e4b0ae453d11d189430000e829fbbd/frameset.htm]

  • Bind container data to a variable.

    In JavaFX, to declare a variable thats bound to another, all i have to do is say:
    var a = 7;
    var b = bind a;and then when I update one, I basically update the other. Can someone re-code this example in Java or provide an alternative, if it is possible?

    There are methods for getting and setting the text within the field,And methods for registering an instance of a class so that it acts as a "listener" and will be notified of any changes to the "document" that the textfield displays.
    By such techniques an instance of some class is effectively bound to the textfield.
    [http://java.sun.com/docs/books/tutorial/uiswing/components/textfield.html] illustrates listening both to the enter key being used, and the text within a field changing.

  • DWR + ADF Bindings get Binding Container at the Filter level

    Hi I'm still pressing on to use DWR with the ADF Bindings.
    To do this, The managed bean method called from javascript needs access to the BindingContainer object or the "#{bindings}" property which is not available out of the box when setting up DWR according to their documentation. So I need to maybe an additional filter or extend the DwrFilter to do this.
    Any ideas how to get or create the bindingContainer object or the "bindings" during the execution of the FacesFilter stage?

    Hi,
    see Duncan Mills article about Ajax auto suggest: http://www.oracle.com/technology/products/jdev/tips/mills/AjaxAutoSuggest/AjaxAutoSuggest.html
    pay an extra attention to the way he configured a pageDef file for the suggest servlet
    Frank

  • Exit from dataforwardAction without refresh control for Binding Container

    Sir's months ago i posted ADF Struts life clycle
    and i though that i had corrected my problem. but last Friday analyzing my bc4j log file i realize that my bindingContainer is still executing my views objects queries;
    What i want, is just exit from adf life cycle if some session variable was not there, forwarding to an login page, or some other page.

    I do not have this issue when using my iMac and in Target Display Mode, so I suspect you are just seeing your screen saver/password since your iMac has been idle while you have been using the Mac mini.
    You can either eliminate the enter password from screen saver via the System Preferences -> Security, or change the period of time when the screen saver kicks in via System Preferences -> Desktop & Screen Saver.
    Sharing the keyboard is a bit tricky.  I'm wondering if maybe you could do something with Teleport.
    <http://www.macupdate.com/info.php/id/14042/teleport>
    You might want to consider maybe just accessing your Mac mini via Screen Sharing, and then you control it totally from your iMac.  Just take the Screen Sharing full screen, and it will be almost as if you are using Target Display mode, only you will be using the iMac's keyboard and mouse/trackpad.

  • Containter -- Container binding

    Can someone explain me in detail the difference between the three container bindings?
    - Copy All Elements (Except System)
    - Programmed Binding (BOR Container)
    - Programmed Binding (Container IF)
    Where can I find some example function modules or classes for a programmed binding?
    Tank you!
    BR, René

    Hi'
    actually SAP Help is all you need to get going in both BOR and IF programmed bindings. Take a look into http://help.sap.com/erp2005_ehp_02/helpdata/en/7c/b82bcd7b9611d194b80000e82dec10/frameset.htm
    If you still have problems, let me know and i'll see if I can find some of the programmed bindings I have made.
    Hope it helps
    Kind regards
    Mikkel

Maybe you are looking for

  • F110-Withholding Tax Not Calculating

    Dear Gurus, For ceratin vendors in F110 system is not paying and in payment run log a msg is generated as--Internal Error:Doc Balance not zero.In one vendor there are 2 open items system is calculating WHT for one invoice correctly and showing in pay

  • In Apple mail, the attachment symbol does not appear in the list of sent items

    In Apple mail, the attachment symbol does not appear in the list of sent items. So you cannot sort sent emails based on whether or not they have an attachment. Is there a way to fix this?

  • Blue Box Question Marks  Since Installing Router

    Hello, Since installing a new Dlink 655 router, I have not been able to view my favorite websites. Most pictures are just blue boxes. A lot of pages won't come up in safari. I have tried to upgrade adobe and fix my permissions, but really haven't had

  • Migrating Business Objects v5.1.1 Universes to Discoverer 4i EUL

    This can be achieved by using the EUL Gateway facility. So has anyone out there done this and can provide me with the scripts

  • Dvd freezing

    I have a fairly complex iMovie project. 1hour 29 minutes. I have shared to iDVD and made a disc image. In spite of doing this twice the resulting image when burned to a dvd freezes at the same point every time in both a pc and two dvd players. The or