Modify view object at responsibility level

Hello,
One of our business requirements is to change the drop-down values for several list of values based on the responsibility the user is logged in with. For example when creating a new application, the LOV 'Country' needs to list certain countries under the responsibility A and other countries under the responsibility B.
In order to accomodate this requirement, I have created an extension to the VO oracle.apps.igs.utilities.server.countriesVO that can be found on the create application page. I have tried two different approaches:
Approach 1:
I have modified the SQL code and used the import utility jpximport to enable the substitution and everything works fine EXCEPT that the substitution is done at the site level, not the responsibility level. There are no options to enable the substitution at the responsibility level.
I tried changing the MDS repository. After initial substitution, the query
BEGIN jdr_utils.printDocument('/oracle/apps/igs/utilities/server/customizations/site/0/CountriesVO'); END;
returns the XML for personalization (substitution). I deleted that entry using
BEGIN jdr_utils.deleteDocument('/oracle/apps/igs/utilities/server/customizations/site/0/CountriesVO'); END;
and used the import utility to import the XML at the responsibility level. the query
BEGIN jdr_utils.printDocument('/oracle/apps/igs/utilities/server/customizations/responsibility/23331/CountriesVO'); END;
returns the correct XML but the extension doesnt appear on the screen.
Do you know what I am missing and if it is possible to enable substitutions at the responsibility level (not site level) at all?
Approach 2:
I am still implementing the View Object extension but I am modifying the SQL code to handle the responsibility:
Original SQL Code:
SELECT territory_short_name,territory_code
FROM fnd_territories_vl
Updated SQL Code:
SELECT territory_short_name,territory_code
FROM fnd_territories_vl
WHERE fnd_global.resp_name <> 'A' OR fnd_global.resp_name IS NULL
UNION ALL
SELECT description as territory_short_name,territory_code
FROM fnd_territories_vl
WHERE fnd_global.resp_name = 'B'
ORDER BY 1
I used the import utility jpximport to enable the substitution and everything works fine EXCEPT that the View Object gets cached and the SQL statement is only executed the first time the object is called. If I clear the cache and I log in using the responsibility A then the countries are correctly displayed. If I login using the responsibility B then the countries for responsibility A are displayed. Same occurs if I clear the cache, login using responsibility B first then switch to responsibility A. Countries for responsibility B are always displayed.
We need to find a way for the SQL to be re-executed every time this object is called. This object should not be cached. Is that possible at all?
Thank you for your help
Benoit

Substitution of VO & AM will can be done only at site level. However controller extension can be personalized/substituted at any level, which includes responsibility level also.
Thanks,
--Anil
http://oracleanil.blogspot.com/

Similar Messages

  • Extending View Object at Responsibility level.

    Hi All,
    Is it possible to extend view object at responsibility level?
    Please tell me steps for extending view object at responsibility level/function level.
    Thanks in advance.
    Laukik Pachanekar

    Substitution of VO & AM will can be done only at site level. However controller extension can be personalized/substituted at any level, which includes responsibility level also.
    Thanks,
    --Anil
    http://oracleanil.blogspot.com/

  • How to execute Custom java data source LOV view object from a common mthd?

    Hi,
    My application contains Custom java data source implemented LOVs. I want to have a util method which gets the view accessor name, find the view accessor and execute it. But i couldn't find any API to get the view accessors by passing the name.
    Can anyone help me iin how best view accessors can be accessed in common but no by creating ViewRowImpl class (By every developer) and by accessing the RowSet getters?
    Thanks in advance.

    I am sorrry, let me tell my requirement clearly.
    My application is not data base driven. Data transaction happens using tuxedo server.
    We have entity driven VOs as well as programmatic VOs. Both are custom java data source implemented. Entity driven VOs will participate in transactions whereas programmatic VOs are used as List view object to show List of values.
    Custom java datasource implementation in BaseService Viewobject Impl class looks like
            private boolean callService = false;
        private List serviceCallInputParams = null;
        public BaseServiceViewObjectImpl()
            super();
         * Overridden for custom java data source support.
        protected void executeQueryForCollection(Object qc, Object[] params, int noUserParams)
            List dataFromService = null;
            if(callService)
                callService = retrieveDataFromService(serviceCallInputParams);
            setUserDataForCollection(qc, dataFromService != null? dataFromService.iterator(): null);   
            super.executeQueryForCollection(qc, params, noUserParams);
         * Overridden for custom java data source support.
        protected boolean hasNextForCollection(Object qc)
            Iterator<BaseDatum> datumItr = (Iterator<BaseDatum>) getUserDataForCollection(qc);
            if (datumItr != null && datumItr.hasNext())
                return true;
            callService = false;
            serviceCallInputParams = null;
            setFetchCompleteForCollection(qc, true);
            return false;
        }Individual screen developer, who want to load data to VO, will do something like the below code in their VO impl class
        public void fetch()
            BaseServiceViewObjectImpl vo = this;
            vo.setCallService(true);
            vo.setServiceCallInputParams(new ArrayList());
            vo.executeQuery();
        }As these custom java data source implemented LOV VOs comes across the screens, i want to have a util method at Base VOImpl class, that gets the view accessor name, finds the LOV VO instance, retrieves data for that. I want to do something like
         * Wrapper method available at Base Service ViewObject impl class
        public void fetchLOVData(String viewAccessorName, List serviewInputParams)
            // find the LOV View object instance
            BaseServiceViewObjectImpl lovViewObject  = (BaseServiceViewObjectImpl) findViewAccessor(viewAccessorName);
            // Get data for LOV view object from service
            lovViewObject.setCallService(true);
            lovViewObject.setServiceCallInputParams(serviewInputParams);
            lovViewObject.executeQuery();
    Question:
    1. Is it achievable?
    1. Is there any API available at View Object Impl class level, that gets the view accessor name and returns the exact LOV view object instance? If not, how can i achieve it?

  • OA Framework pages personalization - how to modify View Instance

    OA Framework pages personalization - how to modify View Instance
    Hi
    I need to add additional field to a page.
    I found View Instance but there is no attribute I need.
    Is it possible to modify View Instance from application level
    because not using JDeveloper?
    Thank you,
    malin

    Hi Malin,
    If your VO does not include the column you are looking for, then the only way to achieve is thru VO substitution for which u will have to use jdeveloper.
    You cannot achieve this by personalization.
    Thanks,
    Sree

  • How to Use Transient View Objects to Store Session-level Global Variables

    hi
    Please consider section "40.8.5 How to Use Transient View Objects to Store Session-level Global Variables"
    at http://download.oracle.com/docs/cd/E14571_01/web.1111/b31974/bcstatemgmt.htm#ADFFD19610
    Based on this documentation I created the example application
    at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.01.zip
    It behaves as show in the screencast at http://screencast.com/t/qDvSQCgpvYdd
    Its Application Module has a Transient View Object instance "MyEmployeesContextVOVI", as master for the child View Object instance "EmpInCtxJobVI".
    On rollback the Transient View Object instance keeps its row and attribute values.
    Also when passivation and activation is forced (using jbo.ampool.doampooling=false ) the Transient View Object instance seems to keep its row and attribute values.
    questions:
    - (q1) Why does the expression #{bindings.MyEmployeesContextVOVIIterator.dataControl.transactionDirty} evaluate as true when a Transient View Object instance attribute value is changed (as shown in screencast at http://screencast.com/t/qDvSQCgpvYdd )?
    - (q2) What would be a robust approach to make a Transient View Object instance more self-contained, and manage itself to have only one single row (per instance) at all times (and as such removing the dependency on the Application Module prepareSession() as documented in "5. Create an empty row in the view object when a new user begins using the application module.")?
    many thanks
    Jan Vervecken

    Thanks for your reply Frank.
    q1) Does sample 90 help ? http://blogs.oracle.com/smuenchadf/examples/
    Yes, the sample from Steve Muench does help, "90. Avoiding Dirtying the ADF Model Transaction When Transient Attributes are Set [10.1.3] "
    at http://blogs.oracle.com/smuenchadf/examples/#90
    It does point out a difference in marking transactions dirty by different layers of the framework, "... When any attribute's value is changed through an ADFM binding, the ADFM-layer transaction is marked as dirty. ...".
    This can be illustrate with a small change in the example application
    at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.02.zip
    It now shows the result of both these expressions on the page ...
    #{bindings.MyEmployeesContextVOVIIterator.dataControl.transactionDirty}
    #{bindings.MyEmployeesContextVOVIIterator.dataControl.dataProvider.transaction.dirty}... where one can be true and the other false respectively.
    See also the screencast at http://screencast.com/t/k8vgNqdKgD
    Similar to the sample from Steve Muench, another modification to the example application introduces MyCustomADFBCDataControl
    at http://www.consideringred.com/files/oracle/2010/ProgrammaticalViewObjectAndRollbackApp-v0.03.zip
    public class MyCustomADFBCDataControl
      extends JUApplication
      @Override
      public void setTransactionModified()
        ApplicationModule vApplicationModule = (ApplicationModule)getDataProvider();
        Transaction vTransaction = vApplicationModule.getTransaction();
        if (vTransaction.isDirty())
          super.setTransactionModified();
    }Resulting in what seems to be more consistent/expected transaction (dirty) information,
    see also the screencast at http://screencast.com/t/756yCs1L1
    Any feedback on why the ADF Model layer is so eager to mark a transaction dirty is always welcome.
    Currently, question (q2) remains.
    regards
    Jan

  • Filter at View Object Level

    Hi Experts ,
    JDEV 11.1.2.1.0
    How can we add filter(Where clause) condition in a View Object?.....that is , say view object need to filter for a Comapany which loggesd in...
    Need to show the record at UI level for a particular company which logged in....
    after getting company code from session , how can we use it for bind parameter for VO?
    Thanks in advance
    PMS
    Edited by: pms on Apr 19, 2012 5:48 PM

    Check this in ADF Developer's guide:
    http://docs.oracle.com/cd/E15523_01/web.1111/b31974/bcquerying.htm#CEGDGIJH
    Thanks,
    Navaneeth

  • Validation at View Object level and not Enity Object

    How would you create validation logic at the view object level and not at the entity object level? I have many VOs that reference the same EO and want some validation logic to be applied only to certain VOs.
    Thanks,
    Quoc

    My use case for this is to perform form validation inputted by the user via a JSPX page.

  • How to put validation between attributes at View Object level in BC4J

    Hi,
    Is it possible in BC4J to put validation between attributes at View Object level?
    I know that I can do it at Entity Object level in validateEntity method, but I have several View Objects connected with one Entity Object and don't want to have the same validation logic for all View Objects.
    Thanks for any help!

    It returns errorWhat error does it return?
    John

  • [SOLVED] ADF BC : View Object "second level" Entity reference issue

    hi
    If I insert a row in a View Object that uses "two levels" of Entity references, the attributes of the Entity on the "second level" don't get a value.
    Consider these tables:
    MY_ROW (MY_ROW_ID, MY_ROW_STUFF, MY_ROW_LU1_ID)
    MY_ROW_LU1 (MY_ROW_LU1_ID, MY_ROW_LU1_STUFF, MY_ROW_LU1_LU1_ID)
    MY_ROW_LU1_LU1 (MY_ROW_LU1_LU1_ID, MY_ROW_LU1_LU1_STUFF)
    Where MY_ROW.MY_ROW_LU1_ID is a "look-up" in MY_ROW_LU1 and MY_ROW_LU1.MY_ROW_LU1_LU1_ID is a "second level look-up" in MY_ROW_LU1_LU1.
    I created default Entities and Associations on these tables and a View Object that uses all 3 Entities (MyRow as Updatable, MyRowLu1 and MyRowLu1Lu1 as Reference).
    See example code in
    http://verveja.footsteps.be/~verveja/files/oracle/ViewObjectEntityReferenceIssue-v0.03.zip
    (contains no Java code, all out-of-the-box ADF BC)
    problem scenario:
    If run the MyRowService Application Module in the Oracle Business Component Browser and "open" the MyRowViewAll View Object instance, I get the rows and their related "look-up values".
    If I click the "Insert a new record" button and fill out values for MyRowId, MyRowStuf and MyRowLu1IdEntity, I only get "look-up" values for the "first level". While the "second level" stays empty.
    For example, a MyRowLu1IdEntity of "2003" gives a MyRowLu1Stuff value of "2003 stuff", but no value in MyRowLu1Lu1Stuff.
    What am I doing wrong? What should I change to also get a value in the "second level" MyRowLu1Lu1Stuff attribute?
    many thanks
    Jan Vervecken

    Jan,
    If you create a view object on Emp and Dept, with Dept as a reference entity, you might choose to build the view object to only include the:
    Emp.Empno (required, since it's the PK of Emp entity usage)
    Emp.Ename (included since you want to show the ename)
    Dept.Deptno (required, since it's the PK of the Dept entity usage)
    Dept.Dname (included since you want to show the dname)
    The wizard enforces the inclusion of the required attributes above.
    When you run this view object, a join is performed and you see the reference data.
    Now, if you want to allow the user to UPDATE the reference data, you need to add one more attribute to the list of attributes:
    Emp.Empno
    Emp.Ename
    Emp.Deptno (To allow user to change Deptno employee belongs to)Dept.Deptno
    Dept.Dname
    At this point, not only is the join performed for you, but the ADF BC reference mechanism reacts to any modification of the Emp.Deptno attribute, correctly showing the reference information for that new foreign-key-referenced department (even before commiting and requerying, at which time the SQL join would pickup that correct, related information).
    The "second level" problem you describe in this thread is simply the same issue described here as a master/first-level-detail situation, taken to its logical next step. If you want the end-user to be able to change the second-level detail to which the first-level-detail is associated, you need to include the first-level-detail's foreign key attributes in the view object's select list. Otherwise, there is no foreign key attribute whose value-change event the framework can react to in order to coordinate the related reference data in the row.
    I've blogged a link to a working example of a four-level reference information view object here:
    http://radio.weblogs.com/0118231/2007/05/09.html#a818
    based on the HR schema.

  • [SOLVED] Row level view object validation (cross-field/multi-field)

    Hi,
    I'm trying to implement a validation rule across multiple view object fields in ADF 11g (11.1.1.2.0). I have 4 fields that the user needs to either leave all blank or there are some pretty complicated rules around which fields should be specified in combination. I'm having trouble using standard expression type validation rules because:
    - The validation rule is always attached to a particular field
    - The validation rule is not executed if the field is left blank. I need it to.
    - I can't control which field the validation message shows in (it always shows in the field on which the rule is attached).
    Is there any way I can hook into the v
    I've found the following example that seems to tackle similar problems:
    +107. Displaying ADF BC Mandatory Field Errors Using UI Hint Labels+
    http://blogs.oracle.com/smuenchadf/examples/
    It's fairly long and complex solution though, which quite a lot of code to be written. This example is from 10g (in 2007). Does anyone know of a more elegant way to achieve this in 11g (in 2010 :) )?

    Thanks John! I didn't realise you could define entity-level rules - now found it in the Business Rules section of the entity properties.
    One more question: is there any way that I can specify which field is in error when an entity-level validation fails? It would be nice if my error message was attached to the field that is in error.

  • Inconsistent view object result set  (REPOST ... no response since 23/07/2002)

    (1)In JSP front-end, I have the following code:
    <%
    ComUtil c = new ComUtil();
    String sAppConfig = c.getAppConfigStr();
    %>
    <jbo:ApplicationModule id="am" configname="<%=sAppConfig%>" releasemode="Stateless" />
    // A datatag is put here to print out a combo box for user selection with all places defined in table
    <MyTagLib:PrintSelectForAllPlaces strTagName="v_CheckPlace" strAmId="am" blnDisplayHyphen="false" />
    <jbo:ReleasePageResources />
    (2) The ComUtil.getAppConfigStr() code is as follows:
    // Configurations parameters
    String _cfPkg = "MyPkg"; // Configuration package name
    String am = cfPkg + ".MyAppMod"; // Fully-qualified application module name
    String _cf = "MyPkgAppModLocal"; // Configuration name for connection info
    String IP_ADDR = "xxx.xxx.xx.xxx"; // x stands for number
    String SID = "MySid";
    String PORT = "xxx"; // x stands for number
    /** Connection string used by front-end JSP for Jbo to obtain configuration name for
    an application module **/
    public String getAppConfigStr () {
    // Create an instance of the application module by name, using local mode
    String sAppConfigStr = am + "." + cf;
    return sAppConfigStr;
    (3) My data tag code:
    public class PrintSelectForAllPlaces extends TagSupport {
    public int doStartTag() {
    ViewMyPlacesRowImpl r = new ViewMyPlacesRowImpl();
    ComUtil c = new ComUtil();
    ApplicationModuleRef amRef = Utils.getAMRefFromContext(pageContext, strAmId);
    ApplicationModule am = amRef.useApplicationModule();
    JspWriter out = pageContext.getOut();
    try {
    ViewObject vo = am.findViewObject("ViewMyPlaces");
    if (vo != null) {
    vo.executeQuery();
    int j = 0;
    out.println("<select name=" + strTagName + " " + strActionList + ">");
    if (blnDisplayHyphen) {
    out.println("<option value = '' selected>--</option>");
    while (vo.hasNext()) {
    r = (ViewMyPlacesRowImpl)vo.next();
    String sPlaceCode = (String)r.getPlaceCode();
    String sPlaceDesc = (String)r.getDescription();
    out.print("<option value = '" + sPlaceCode + "' ");
    System.out.println("sPlaceCode: " + sPlaceCode);
    if (strDefaultValue != null) {
    if (strDefaultValue.length() > 0) {
    if (sPlaceCode.equals(strDefaultValue)) {
    out.print("selected");
    out.print(">");
    out.print(sPlaceDesc);
    out.println("</option>");
    out.println("</select>");
    } else {
    out.println("View object not found! ");
    } catch (JboException je) {
    je.printStackTrace();
    } catch (IOException ioe) {
    ioe.printStackTrace();
    return SKIP_BODY;
    My question:
    - When i run my jsp, sometimes 2 rows are retrieved, sometimes 3 row are retrieved, sometimes all are retrieved, which can be simulated by 'Refreshing' the jsp page. I feel quite upset as this affects my whole application seriously. Would anyone give me any idea about my case?
    (I have tried to re-make and re-compile the project; synchronizing my table structure; and also tried vo.clearCache(); but still no use. Moreover, The retrieved resultset supposed to be a reference table which will not change frequently, which means that caching is not serious affected.)
    My case is quite urgent to me. In case of any ideas, please don't hesitate to let me know.
    Thanks a lot for your replies!

    Dear Shailesh, would you please give me some guidelines for how to generate diagnostic outputs for BC4J? I don't know how to run the function, which may be very helpful for debugging. ^v^
    Regarding the problem I mentioned, more details are listed as follows:
    1. My mentioned table has 5 rows in total.
    2. My expected result set has 4 rows, which is filtered by the Query statement:
    - SELECT PLACE_CODE, PLACE_DESC FROM PLACES WHERE DISPLAY_FLAG = 'Y';
    3. Why I know the retrieved row is not equal because the program code line in my first post for this topic:
    System.out.println("sPlaceCode: " + sPlaceCode) is embedded in the loop within while (rs.hasNext()). Sometimes the output like this:
    sPlaceCode: PLACE1
    sPlaceCode: PLACE2
    sPlaceCode: PLACE3
    Sometimes like this:
    sPlaceCode: PLACE1
    sPlaceCode: PLACE2
    4. It is in random behavior.
    The situation has been improved after I have 'Test' the BC4J view, that I have navigated all records. Then, the time of displayed all expected records has been increased. Such a mystery ... What I am feeling worried is that, I can't navigate all the time for my reference tables ~~~ besides, it still shows the same problem until now.
    My Requests:
    1. Please give me the guidelines for generating the diagnostic output.
    2. Please help to investigate my mentioned problem.
    Thanks so much for your help and replies!

  • Modifying where clauses for View Objects in Backing Beans

    In studying the RichTable class I saw no get/set methods that would allow me to manipulate the underlying view instance and rowset for the table in the Backing Bean. I know there is a way to do it, but I having great difficulty in finding it. The tutorials show how to build view objects and display them, but I haven't seen a tutorial that show how to respond to events from the Web page and directly change the data model and what is displayed via the backing bean.
    Can some one point to a tutorial or give me an example on how I can change a view object via a backing bean?

    What you want to do is add a method to your View Object Implementation class that changes the WHERE clause with setWhereClause or addWhereClause. Expose the method to your client. Then call the method from your page by binding it to a commandButton or commandLink. You can bind it through a pageDef file or a backing bean.

  • ADF - View Objects

    Hi All,
    We are working on building a web application using on ADF.
    The landing page of our application is a dashboard screen that is read-only with 100 to 500 records displayed in a table.
    User can move to other pages and create requests.
    1) When user is on dashboard and moves to other pages of the application, is there a way to release the memory used by view objects and underlying entity objects used by the views used to display the dashboard? Another point here is, our application requirement is to refresh the data from database when user moves between screens. Even if user switches back to dashboard screen after moving to other screen the data needs to be queried anyway. So for better memory management of the application we would like to release the memory for GC when user leaves our dashboard screens.
    Another question I have is:
    2) When a application module passivation occurs, will there be a snapshot taken for all view rows and entity caches or will it be only for pending DB state - entities added/modified/deleted? - We have lot of cases in our application where we display read-only dashboards and I am trying to understand if we can turnoff the passivation on view objects used to display read-only data if passivation deals with only pending DB state.
    Please suggest.

    Hi,
    1) When user is on dashboard and moves to other pages of the application, is there a way to release the memory used by view objects and underlying entity objects used by the views used to display the dashboard? Another point here is, our application requirement is to refresh the data from database when user moves between screens. Even if user switches back to dashboard screen after moving to other screen the data needs to be queried anyway. So for better memory management of the application we would like to release the memory for GC when user leaves our dashboard screens.
    Note that premature optimization can be contra-productive and often is the root of all evil. In other words, as long as you don't experience performance problems, I would let the framework do its job - so be careful wanting too much without a reason. Anyway, to clear the entity cache (and this is the only memory you need to bother for) you can call  <ApplicationModuleInstance>.getTransaction().clearEntityCache(String entityName);
    clearEntityCache
    public void clearEntityCache(java.lang.String entityName)
    Clears the cache of the specified Entity Object. A value of null clears the caches of all Entities. If a View Object uses the Entity Object, the View Object's cache will be cleared as well.
    Parameters:
    entityName - the name of the entity whose cache is to be cleared. If null, caches for all entities are cleared.
    Another question I have is:
    2) When a application module passivation occurs, will there be a snapshot taken for all view rows and entity caches or will it be only for pending DB state - entities added/modified/deleted? - We have lot of cases in our application where we display read-only dashboards and I am trying to understand if we can turnoff the passivation on view objects used to display read-only data if passivation deals with only pending DB state.
    Passivation is for pending changes only and not for all queried data. You define passivation on the AM level and you can switch it off there. In this case I suggest you use an Application Module that speacifically holds the dashboard queries.
    Since performance is your concern I recommend you reading:
    Advanced View Object Techniques - 11g Release 1 (11.1.1.7.0)
    Tuning Application Module Pools and Connection Pools - 11g Release 1 (11.1.1.7.0)
    Frank

  • Adding New View Objects/Link on "Preview and Print" - Order Acknowledgement

    Hi,
    Can we add New View Objects/View Links for the existing "Preview and Print" Order Acknowledgement.
    I want to add for the 2 new functionalities i.e., for Charges (from OE_PRICE_ADJUSTMENTS_V ) and the Line Level Notes, which is currently not supported by Oracle.
    Can anyone help me on acheving this functionality?
    Looking forward for your response.
    Thanks in advance,
    Regards,
    Muru

    You can do that. You should first create the new business objects(AM, VO, VL) in jdeveloper, create your new regions in jdeveloper, associate the AM to the top level region(stackLayout) you create. Use personalization and add a stack layout in the Preview and Print page, set the extends property to point to the new region which you had created. Donot forget to deploy all the files in middle tier before doing the personalization.
    The AM which you had added to the stackLayout will automatically be nested with the root AM of the page during runtime.

  • Possible?Multi-Entity View Object with one Entity Object that is Read-only.

    I know this sounds crazy, but I would like to create a multi-entity view object, where one entity object is based on a table in my application (we'll call it "Users", which basically stores the primary key for the person from the institutional people database), and the other table is a entity object based on a view of the institutional people database table (read only access), which we can call "People".
    I know that since no updates will be done to the People table, it really should be a read-only View Object, but I would lose the ability to sort on attributes like Last Name, Hire date, etc, since those would be transient attributes in my ViewObject for the Users. By having People as an entity object, I can then create a multi entity view object and have the ability to join Users to People and be able to sort on the above mentioned fields (like Last Name).
    The problem is that when I use the JDev (I'm currently using 10.1.2.1) AppModule BC4J tester, when I click on the multi-entity view object that I added to the AppModule it gives me an error:
    oracle.jbo.RowCreateException) JBO-25017: Error while creating a new entity row for People.
    ----- LEVEL 1: DETAIL 0 -----
    (java.lang.InstantiationException) null
    I have tried to change all the attributes to updateable in my entity object, but no create method, and I have tried to make them all read-only, but no effect, I get the same error (probably because the People view is read-only in my schema).
    Is there a way to change the entity object so that it will not try to create a new row when it runs the Tester? So that the multi entity view object behaves more like a view link, but gives me the added bonus of being able to sort on the Last Name column from the People table?
    Thanks for any help on this subject...at worst, I will have to use the view link method to get the job accomplished, but it would be "cooler" if this would work!
    Jeremy.

    Steve, thanks for your quick response to my question.
    To answer your questions, I was trying to create the Multi-entity View Object to give me more flexibility when working with my User table, and my People view. The flexibility I desired was that I would be able to sort my Users based on attributes in the People view. This is not possible when the there is only one Entity in my VO, and the People view data are all transient attributes, because they are not in the SQL statement.
    Ultimately, after working with one of my colleagues, we decided to use the approach that you mentioned by creating a read-only VO with the SQL query we want to display to the user (contains both User and People data fields), and then use a different ViewObject when performing other actions on the User Table (such as inserts/updates/deletes). By using the setWhereClauseParam() method in the handleLifeCycle() for the JSP page, we should be able to navigate between the different View Objects, so that the user does not see any difference.
    Thanks! Oh, and by the way, I have read your article you included before, and I have used it many times before to tune my View Objects! Thanks!

Maybe you are looking for