Entity Object's "addNewRow" Permission, how to implement?

Hi,
this is a generic question about an implementation strategy to be followed for ADF Authorization.
I've been researching the definition of permissions at the entity object level, and successfully tested the 3 permission targets available: read, update, removeCurrentRow.
However, I'd actually need the full set of permission targets for CRUD operations, which means that ADF lacks an "addNewRow" to secure row creation on EOs.
What should be the strategy to implement that?
Is it a planned feature so waiting till, say, 11g Release 2 should bring it to the table, or has it been left out by design and thus it just won't be added? In the latter case, how to actually implement it?
I'd need to actually hide/disable the Create/CreateInsert button on my edit pages if the underlying EO does not allow new row creation for the current role. I gave a thought to EO's Custom Properties as a way to handle that extra permission flag, but is it a viable way? Can they be accessed through EL so that I can, say, use them directly in the Rendered/Disabled property of the button to regulate access?
Or would you suggest another strategy altogether?
Please share your ideas.
thanks,
RickyS

Well, I can definitely see some benefits in having security at the model layer, at least in our scenario. In a complex app with many edit pages often dealing multiple times with the same EOs, having to specify a single set of policies on the EO itself and see it automatically implemented on every page seems a plus and a step ahead from 10g - not that I tried Security in 10g, but I know the approach. Seeing fields automatically become read-only or datacontrol operation buttons such as Delete become disabled without specifying anything on the page is cleaner and will speed up development a bit, too (for large numbers of pages that might be significant, on a small app it's probably irrelevant).
Probably not as useful and powerful as model-driven lists, but still a welcome feature. You probably have a point about the double mainteinance, but that may be avoided if the BC layer security truly encompasses everything (e.g. if I can't rely on a "create" permissions, I'll certainly have to maintain additional code as well as additional BC data such as custom properties to deal with that, and this is even worse).
Another point is that I might want to enable/disable functionality on the page via EL/backing bean based on BC permissions, and that seems useful. Being able to express a condition like "this EO is accessible" or "this attribute is accessible" is sometimes much superior to "user belongs to this role". It's better to decouple roles from the secured targets and just use the latter, IMHO. Especially becuse we'll likely won't have a fixed set of static roles defined in advance for all customers we'll deploy our webapp to.
Just my 2 cents, anyway, you might end up being totally right :-)
Cheers,
RickyS

Similar Messages

  • Dynamic Creation of Entity Objects (ADF Business Components)

    Hi All,
    We have a requirement to create Entity Objects for the dynamically generated tables in our application and at the same time bind them to different views.
    Our product create multiple tables at runtime with some sort of naming convention, and we couldn't find a way in JDeveloper to generate entity objects for the tables created dynamically.
    Please provide some pointers if you have experienced or worked on similar requirement.
    Thanks,
    Nikhilesh

    Thanks for the help Sudipto.
    The link which you have shared, describes the creation of an entity object and then modify the operations like Delete Update and Insert etc to be performed on the entity object by creating IMPL classes and implementing certain interfaces.
    But I need to create Entity objects dynamically. My application creates new tables for some functionality at the run time and I have to create Entity objects for those new tables as soon as the new tables are created.
    I was just wondering if, there is any API available for creating the entity object from Java code instead of invoking the wizard in the Jdeveloper.

  • Add new entity object using JDBC Datasource.

    HI my jdev version is 11.1.1.5.0
    I have an adf application with JDBC Datasource connection.
    Now how can I Add a new entity object with JDBC Datasource.How can i connect to DB to map the entity object.
    Thanks

    You need to have a DB connection defined for the project to be able to create new EOs - so just define a new DB connection.
    If you already have ADF BC defined in your application - then it probably means you already have a DB connection defined - see project properties->ADF BC section.

  • How to implement parent entity for core data

    Hi there.
    I am starting a document-based Core Data application (Cocoa) and developed the following data model;
    The 'invoice' entity is a parent entity of 'items', because ideally I would want there to be many items for each invoice. I guess my first point here is - is what I am trying to do going to be achieved using this method?
    If so, I have been trying several ways in Interface Builder to sort out how to implement this structure with cocoa bindings. I have made a Core Data app before, just with one entity. So this time, I have two separate instances of NSArrayController's connected to tables with relevant columns. I can add new 'invoice' entities fine, but I can't get corresponding 'items' to add.
    I tried setting the Managed Object Context of the 'item' NSArrayController to this;
    I thought this would resolve the issue, but I still have found no resolution to the problem.
    If anyone done something similar to this, I'd appreciate any help
    Thanks in advance,
    Ricky.

    Second, when you create a Core Data Document Based application, XCode generates the MyDocument class, derivating from NSPersistentDocument. This class is dedicated to maintain the Managed Object Model and the Managed Object Context of each document of your application.
    There is only one Context and generally one Model for each Document.
    In Interface Builder, the Managed Object Context must be bound to the managedObjectContext of the MyDocument instance: it's the File's owner of the myDocument.xib Nib file.
    It's not the case in your Nib File where the Managed Object Context is bound to the invoiceID of the Invoice Controller.
    It's difficult to help you without an overall knowledge of your application, perhaps could you create an InvoiceItem Controller and bind its Content Set to the relationship of your invoice.

  • How I configure a default value in an entity object?

    Hi,
    1:how I configure a default value in an entity object?
    attribute type: DATE
    I want to set the current date
    ...thanks

    Override the create() action in your entity object implementation:
    protected void create(AttributeList attributeList)
    * This method should be subclassed to supply programmatic default values to
    * various attributes of a new Entity Object. For example, to create a sequence.
    * Instances of subclasses should call super.create() before performing any operations.
    System.out.println("create(AttributeList attributeList) - start");
    Date datSysdate = ( oracle.jbo.domain.Date) Date.getCurrentDate();
    super.create(attributeList);
    // set the default to today...
    setHiredate( datSysdate );
    System.out.println("create(AttributeList attributeList) - end");
    }

  • Implementing a view Object with Multiple Updateable Dependent Entity Objects

    Hello,
         I want to implement view object with multiple updateable entity object,
         i have refered this link its good https://forums.oracle.com/thread/63721
         here they have explained with 2 table,
         but when we have more then 5 tables and each table have Primary keys , Foreign key , Sequence and  trigger created on it. Then whats steps should i want to fallow.
         if possible some please provide the link or some one help me out how to do this .
         thanks in advance
         cheers

    Has the Advanced View Object Techniques been referred?

  • Implement a View Object with multiple entity objects

    Hi
    In 'How to' section on the 'otn.oracle.com' (Jdeveloper) web site is tutorial how to implement a View Object with multiple updateable dependent entity objects.
    It allows user to insert an employee and a department at the same time.
    But I would like to change this example to insert a new department only if it does not already exist. How to change this sample?
    Is there any other way to this?
    Thanks
    Regards
    Gorazd

    Once again the structure, sorry.
    ViewObject
    |-ParentEntityObject
    ..|-PId
    ..|-PAttribute
    ..|-CId (FK)
    |-ParentChildAssociation
    |-ChildEntityObject
    ..|-CId
    ..|-CAttribute
    Christian

  • How to query the database in an Entity Object (EO)

    I am using JDeveloper 11.1.2.2.0
    I am Forms developer working in a new ADF project and need some help from the ADF gurus, I am just a ADF beginner.
    Maybe hits question has a easy solution, but I don't know how to implement this:
    I have simplified my scenario, but this is what I Need to do:
    One database table DBTABLE with 3 columns (C1,N1,D1) C1-varchar2; N1-Numeric; D1-Date.
    In the DBTABLE I have the following data:
    ONE; 10; 01/10/2012
    ONE; 20; 02/10/2012
    TWO; 15; 02/10/2012
    ONE; 15; 03/10/2012
    I have created an ADF EO for the DBTABLE with all 3 attributes, then I have created another transient numeric attribute T1.
    My requirement is when I create a new record and set attribute C1=ONE the transient attribute T1 should show sum(N1) from DBTABLE where D1>= 01/10/2012 and D1 < 03/10/2012.
    In this case when I create a new record should the shown in T1 a total of 10+20 = 30.
    I know how to use the EOImpl getters and setters, and how to set the T1 attribute when C1 is set. My problem is how to calculate the total T1.
    How can I implement this in ADF? It is possible to implement this in the EO? It is possible to make the query select sum(N1) from DBTABLE where D1>= 01/10/2012 and D1 < 03/10/2012 and return the value to the EO attribute?
    Thank you in advance

    Hi Peter
    Thank you for your suggestions, both of them are interesting but unfortunately they do not solve my problem, or at least I don’t know how.
    I will try to better explain my problem
    I have te table DBTABLE and another related table called DBDATES with colums(C1,DT1,DT2,TARGET) where I record periods of time and desired target. For instance my DBDATES table could have the following records
    ONE; 01/01/2012; 31/01/2012; 100
    ONE; 01/02/2012; 29/02/2012; 90
    ONE; 01/03/2012; 31/03/2012; 95
    TWO; 01/01/2012; 31/01/2012; 140
    Exist a FK between both tables in the C1 column.
    I have created an EO for the table DBTABLE with the tree persistent attributes (C1, N1, D1) an transient attribute (T1). The (C1,D1) is my DB primary key.
    When I create a new record in the DBTABLE and based in the actual date I need to query the DBDATES table to check which is my TARGET and the valid target dates. For Instance if a record for person ONE is created on February 12, my TARGET is 90 from 01/02/2012 to 29/02/2012.
    At the same moment I need to check the total amount of items record to the person ONE during the full target period.
    Select sum(N1)
    From DBTABLE
    Where D1 between V2 and V3
    And C1= V1;
    Bind variables:
    V1 = ‘ONE’;
    V2 = ‘01/10/2012’ – queried from DBDATES
    V3 = ‘03/10/201’ – queried from DBDATES
    In resume, for a determined person when I create a new record in the DBTABLE I need to know their target for the actual period and how much as been record until now.
    I don't know if is possible to solve this without using the View Objects, because I need to query the DBTABLE for a time frame and with bind variables.
    Thank you in advance for your help.

  • How to add row in multiple view object based on common entity object.

    Hi ,
    I have
    Jdeveloper version - 10.1.3.3.0
    Oracle Database - 11g R2
    I have a situation where i have to show data from one table in three adf tables on jsf page depending on a flag value in a column in table. For this purpose i have done the following steps
    a) Created an entity object on the database table .
    b) Created three view objects on this entity object and edited the view object's SQL and included the where clause
                       WHERE  A.USER_PERSONAL_NO = :P_USER_PERSONAL_NO AND
                           A.AUTH_TYPE = 'LF'
                       The auth_type cloumn decided in which view object the data will be shown
    Now, when i query the data from database by executing the query of these view objects the data is shown correctly in all three view objects. Till here there seems every thing ok
    Now , i have to provide the logic to add records in the adf tables for this i have provided add button in action facet of all three tables which are binded to methods in managed bean,
    when i add a record in a adf table by add button the new row which is created is shown in all three tables . I cant understand why this is happening , please help me to solve this problem.
    How can i make it possible so that the record appears only in that adf table in which the record is added.
    The method for adding record is
                Row rw = currentAM.getWfRecommAuths().createRow();
                rw.setAttribute("UserPersonalNo",this.getQuery_personal_no().getValue());
                rw.setAttribute("AuthPersonalNo","");
                rw.setAttribute("AuthType","LX");
                currentAM.getWfRecommAuths().last();
                currentAM.getWfRecommAuths().insertRow(rw);
               Please help , thanks in advance.

    Hi,
    have a look at polymorphic view objects
    http://download.oracle.com/docs/cd/E21764_01/web.1111/b31974/bcadvvo.htm#CEGDCCCB
    Frank

  • How to avoid Entity Object validations when comiting a DB transaction

    Hello,
    I have a screen that have three sections:
    1. Header
    2. First tab that contains rows, lets call it User Details  - only the ability to add records and update existing
    3. Second tab that contains rows, lets call it Roles  - ability to create, modify and delete
    -- I have a Save and Cancel button
    I have an Entity Object that covers the whole page UserDetailsEO and it has its validation methods on the implementation UserDetailsEOImpl.java.
    On the second tab when deleting the record, the delete binding method its called and it has a row to commit the transaction. By doing so the validations for the EO are called.
    However I want to avoid performing validation at this point. I can delete rows without any validation, I just want to do the validation when clicking Save.
    Is there any way to accomplish this?
    Thank you,

    Hello Timo,
    Thanks for your answer, the delete action comes from an applicationTable, here is my code:
    The deleteImmediate is set to true.
    <fnd:applicationsTable tableId="t2" id="AT1"
                                             deleteEnabled="true"
                                             createPatternType="inline"
                                             createImmediate="true"
                                             createText="#{applcoreBundle.ADD_ROW}"
                                             deleteActionListener="#{ParticipantDetailPageBean.invokeConfirmationDelete}"
                                             deleteImmediate="true"
                                             styleClass="AFStretchWidth"
                                             deleteMsg="#{applcoreBundle.DELETE_CONFIRM}"
                                             deletePartialTriggers="_ATp:t2"
                                             duplicateEnabled="false">
    The popup does not have buttons itself. Here is the code
    <af:popup id="confirmDeletePopup"
                                      binding="#{ParticipantDetailPageBean.deleteYesNoPopup}"
                                      childCreation="deferred">
                              <af:dialog id="d1" type="okCancel"
                                         dialogListener="#{ParticipantDetailPageBean.handleConfirmDeleteDialog}"
                                         title="#{IcCnSrpTopGenBundle['Header.RoleAssignmentDeleteWarning']}">
                                <af:panelGroupLayout id="pgl4">
                                  <af:panelFormLayout id="pfl2">
                                    <f:facet name="footer"/>
                                    <af:activeOutputText value="#{applcoreBundle.DELETE_CONFIRM}"
                                                         id="aot1"/>
                                  </af:panelFormLayout>
                                </af:panelGroupLayout>
                              </af:dialog>
                            </af:popup>

  • How to implement Strategy pattern in ABAP Objects?

    Hello,
    I have a problem where I need to implement different algorithms, depending on the type of input. Example: I have to calculate a Present Value, sometimes with payments in advance, sometimes payment in arrear.
    From documentation and to enhance my ABAP Objects skills, I would like to implement the strategy pattern. It sounds the right solution for the problem.
    Hence I need some help in implementing this pattern in OO. I have some basic OO skills, but still learning.
    Has somebody already implemented this pattern in ABAP OO and can give me some input. Or is there any documentation how to implement it?
    Thanks and regards,
    Tapio

    Keshav has already outlined required logic, so let me fulfill his answer with a snippet
    An Interface
    INTERFACE lif_payment.
      METHODS pay CHANGING c_val TYPE p.
    ENDINTERFACE.
    Payment implementations
    CLASS lcl_payment_1 DEFINITION.
      PUBLIC SECTION.
      INTERFACES lif_payment.
      ALIASES pay for lif_payment~pay.
    ENDCLASS.                 
    CLASS lcl_payment_2 DEFINITION.
      PUBLIC SECTION.
      INTERFACES lif_payment.
      ALIASES pay for lif_payment~pay.
    ENDCLASS.                   
    CLASS lcl_payment_1 IMPLEMENTATION.
      METHOD pay.
        "do something with c_val i.e.
        c_val = c_val - 10.
      ENDMETHOD.                   
    ENDCLASS.                  
    CLASS lcl_payment_2 IMPLEMENTATION.
      METHOD pay.
        "do something else with c_val i.e.
        c_val = c_val + 10.
      ENDMETHOD.  
    Main class which uses strategy pattern
    CLASS lcl_main DEFINITION.
      PUBLIC SECTION.
        "during main object creation you pass which payment you want to use for this object
        METHODS constructor IMPORTING ir_payment TYPE REF TO lif_payment.
        "later on you can change this dynamicaly
        METHODS set_payment IMPORTING ir_payment TYPE REF TO lif_payment.
        METHODS show_payment_val.
        METHODS pay.
      PRIVATE SECTION.
        DATA payment_value TYPE p.
        "reference to your interface whcih you will be working with
        "polimorphically
        DATA mr_payment TYPE REF TO lif_payment.
    ENDCLASS.                  
    CLASS lcl_main IMPLEMENTATION.
      METHOD constructor.
        IF ir_payment IS BOUND.
          me->mr_payment = ir_payment.
        ENDIF.
      ENDMETHOD.                  
      METHOD set_payment.
        IF ir_payment IS BOUND.
          me->mr_payment = ir_payment.
        ENDIF.
      ENDMETHOD.                  
      METHOD show_payment_val.
        WRITE /: 'Payment value is now ', me->payment_value.
      ENDMETHOD.                  
      "hide fact that you are using composition to access pay method
      METHOD pay.
        mr_payment->pay( CHANGING c_val = payment_value ).
      ENDMETHOD.                   ENDCLASS.                  
    Client application
    PARAMETERS pa_pay TYPE c. "1 - first payment, 2 - second
    DATA gr_main TYPE REF TO lcl_main.
    DATA gr_payment TYPE REF TO lif_payment.
    START-OF-SELECTION.
      "client application (which uses stategy pattern)
      CASE pa_pay.
        WHEN 1.
          "create first type of payment
          CREATE OBJECT gr_payment TYPE lcl_payment_1.
        WHEN 2.
          "create second type of payment
          CREATE OBJECT gr_payment TYPE lcl_payment_2.
      ENDCASE.
      "pass payment type to main object
      CREATE OBJECT gr_main
        EXPORTING
          ir_payment = gr_payment.
      gr_main->show_payment_val( ).
      "now client doesn't know which object it is working with
      gr_main->pay( ).
      gr_main->show_payment_val( ).
      "you can also use set_payment method to set payment type dynamically
      "client would see no change
      if pa_pay = 1.
        "now create different payment to set it dynamically
        CREATE OBJECT gr_payment TYPE lcl_payment_2.
        gr_main->set_payment( gr_payment ).
        gr_main->pay( ).
        gr_main->show_payment_val( ).
      endif.
    Regads
    Marcin

  • How to implement a Session Object.

    Hi,
    If anybody show me any example of how to implement
    session object so that I can store any parameters such as user id and use it later on. And also if there is any good web site for reference about using session object.
    thanks

    You can use the the session.setAttribute and session.getAttribute methods.
    For example let's say you would want to store a username in the session after a user has logged on:
    String usrname = request.getParameter("username");
    session.setAttribute("myStoredUsername", usrname);
    you can then retrieve it using the get method. Remember that the entities stored inside a session object are generic objects and need to be cast to be used:
    String usrname2 = (String)session.getAttribute("username");
    Hope this helps
    Chelman

  • How to Insert the System Date in the entity object

    Hello,
    I have the problem - in entity object I have one attribute as 'Created_Date' in the <entity>Impl.java,
    to this attribute I want to assign the value as a System Date. Could someone please let me know how to do this?
    Thanks

    Hint for all who are trying another solution. You might think it's easier to assign a SystemDate using this method:row.setDate(new Timestamp(System.currentTimeMillis())); But unfortunately this solution has a real gotcha! Doing this you are writing an Attribute with a precision of milliseconds. Unfortunately the SQL-Date type can hold only full seconds. So this solution sometimes leads to the Problem that BC4J complains that "someon else has changed the row" (in reality the database has simply stripped off the seconds).
    Even if you are trying to convert the Timestamp to an oracle.jbo.domain.Date like this Date myDate = new Timestamp(System.currentTimeMillis()));
    row.setDate(myDate); you will not be able to solve the problem. 'myDate' still holds the milliseconds, it only doesn't display them. You might still discover that BC4J complains for modified rows.
    So the solution given by Faraz is definitively the best solution, even if it looks complicated, as it strips off the milliseconds.

  • How to create Entity object for Non Database Object.

    Friends,
    I have a requirement something like, I will be getting some huge amount of data from external system via CORBA, I have to display the data in jsff page in <af:table>. My requirement is If User updates any of the row I need to identify what are all the rows user updated and Need to invoke again a CORBA call for only UPDATED Rows.
    Basically here, I am not dealing anything with the Database, I assume using Entity we can find out a status of the row whether the row is updated/deleted/created .
    How can I create an Entity object in this case.
    Any help will be highly appreciated !!!
    Thanks

    The basics steps are described here http://download.oracle.com/docs/cd/E14571_01/web.1111/b31974/bcadveo.htm#sm0328
    and here http://download.oracle.com/docs/cd/E14571_01/web.1111/b31974/bcadvvo.htm#sm0341
    You need to change the underlying data source from pl/sql to meet your requirements (CORBA).
    Timo

  • How do I make a view object containing two entity objects updatable?

    I have a view object that contains attributes from two entity objects. The query looks like this
    SELECT AplCfgPartyEO.ID,
    AplCfgPartyEO.ID_HRM_BRW_JOB,
    HrmBrwJobEO.CREATED_BY,
    HrmBrwJobEO.CREATION_DATE,
    HrmBrwJobEO.ID AS ID1,
    HrmBrwJobEO.ID_HRM_BAS_JOB_TYPE,
    HrmBrwJobEO.JOB_NO,
    HrmBrwJobEO.MODIFIED_BY,
    HrmBrwJobEO.MODIFY_DATE,
    HrmBrwJobEO.ORIGIN,
    HrmBrwJobEO.PICTURE
    FROM APL_CFG_PARTY AplCfgPartyEO, HRM_BRW_JOB HrmBrwJobEO
    WHERE AplCfgPartyEO.ID_HRM_BRW_JOB = HrmBrwJobEO.ID
    My problem is that I am only allowed to update the attributes from the AplCfgPartyEO entity object while the attributes from the HrmBrwJobEO entity object become read only. I want to be able to update all of the attributes how do I do that?

    If someone will read this later I can inform them that I am using Studio Edition Version 11.1.1.0.2 at the moment. Thanks Chris, your answer solved my problem but I was a little surprised though that it wasn´t updatable by default.

Maybe you are looking for

  • FCPx will not open, Leaves spinning beach ball of death over the application which is unresponsive after upgrade to 10.8.2.

    I recently decieded to upgrade my computer from Lion to Mountain Lion, right after the upgrade this problem started with my FCPx 10.0 so i decided maybe the software was unsupported so I chose to download the trial of 10.0.6 FCPx. This aswell became

  • Pls. JS for the below simple IF statement

    Hello, I am new to JavaScript, could you pls. consolidate the below 2 IF statements into only 1 summary IF statement (I mean, put the red IF statement into blue IF statement) my_form:Page1:SunForm1:Middle_Name_text_field ::: Change JavaScript I wrote

  • BEX/WAD Errors

    Hello Experts User keeps getting "Run-time error 91" Object variable or with block variable not set, & Run-time error 1004 when running query from WAD when ever user logs onto saved work books in favorites from BW side. Please does anyone know why th

  • Newbie-How Do You Turn On/Off Webcam On The S10?

    Curious how the webcam works on the S10? How do you turn on/off the internal camera? Any instructions on use? Thanks.

  • Nokia N95 Emergency calls

    My Nokia N95 is not connecting to any network and it has emergency only calls could someone tell me why this would be happening?