[NEWBIE] What's IsaCoreBaseAction's isaPerform method bom param's value?

Hi Experts,
I'm new to the ISA Framework.
Can you please help me understand what will be the value of bom variable in isaPerform method?
Where does it gets the value? Will it get values in bom-config.xml? Or will it only load the available functions from ISA API ?
Please advise, thank you very much!
public ActionForward isaPerform(
          ActionMapping mapping,
          ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response,
          UserSessionData userSessionData,
          RequestParser requestParser,
          BusinessObjectManager bom,
          IsaLocation log)
          throws CommunicationException {
Edited by: jemaru on Feb 1, 2010 8:04 PM
Edited by: jemaru on Feb 1, 2010 8:59 PM

Hi Jemaru,
To access Business Objects (BO) you need Business Object Manager(BOM) main function of BOM is to access or get reference of Business Objects to use in your Action class. If you want to use any Business Object whether it is standard ISA BO or your custom BO you can access it or get reference of BO only through BOM.
If you have custom BO then you have to create custom BOM and appropriate entry must be created in customer "bom-config.xml" file.
Main object of BOM is to manage Business objects. When you try to access access any BO, Relevant BOM checks if there is already an object created. If so, a reference to this object is returned, otherwise a new object is created and a reference to the new object is returned.
If you want to access custom BO then first you have to get Reference of your Custom BOM and then by using BOM reference you can get access or reference to your custom BO.
Proper entry of custom BOM must be created in "bom-config.xml" file in customer space.
In IsaCoreBaseAction class bom contains ISACORE-BOM object. i.e. standard BusinessObjectManager throught which
you can get reference of Business Object like User, Shop, Basket etc....
More detail and example you can find in Development and extension Guide which is available from service market place.
I hope this little explanation will help you to understand the BOM functionality.
Regards.
eCommerce Developer

Similar Messages

  • Newbie: what is the equivalent of passing request parameters?

    Hi-
    I am new to JSF. I have read many tutorials and articles. I still don't get one concept about passing parameters. Note: I don't want to store stuff in the session unless I have to.
    Let's say I have a page with a list of users. I layout the page with a panelGrid. Each row of the table has the first and last name of the user. If a user clicks on the name of a user on the user list, it should go to the user profile page. The backing bean for the user list page will be the UserListBean. It has a method called getUsers() that returns a List of User objects.
    For the View User page, I have a ViewUserBean. The ViewUserBean retrieve the entire profile for that user.
    How do I pass the user ID to the ViewUserBean? In struts, I would pass it as a request parameter (I would manually write the link URL with the userID). I know I can use the request like that in JSF, but that seems ugly. I looked at the code of the J2EE bookstore tutorial and it does a funky thing with all sorts of data stored in the session.
    What is the best way to request a page and "pass in" a userID?
    Thanks for your help.
    Adam

    I have a case on my current project very similar to your case. What you want, very simply, is an easy way to allow faces to handle URLs like http://www.domain.com/showUserDetails?userId=50
    The natural trouble is that when loading the page, there is no action to use to prefetch the User object based on the Request Parameters in JSF.
    All the solutions above either rely on the session or they are exceedingly complex. This case is actually very easy to do and is very straight forward using Managed Properties and a Request Scope bean...
    Here is the rather straight forward solution I used...
    First, make a "ShowUserDetailsBean" which represents the "logic" for this page.
    public class ShowUserDetailsBean
        /** Will point to the actual user service after dependency injection*/
        private UserService userService;
        /** Will hold the userId from the HTTP Request Parameters*/
        private String userId;
        /** Will hold a lazy loaded copy of the User object matching userId*/
        private User user;
        public void setUserService(UserService userService) {
            this.userService = userService;  //dependecy injection
        public void setUserId(String userId) {
           this.userId = userId;  //dependency injection
        /** Lazy loads the User object matching the UserId */
        public User getUser() {
            //Trap the case where the URL has no userId
            if (userId == null) return null;
            if (user == null) {
                user = userService.getUser(userId);  //Lazy Load
            return user;
    }Next, configure the managed properties in faces-config.xml
    <faces-config xmlns="http://java.sun.com/JSF/Configuration">
      <managed-bean>
        <managed-bean-name>userService</managed-bean-name>
        <managed-bean-class>foo.UserServiceImpl</managed-bean-class>
        <managed-bean-scope>application</managed-bean-scope>
      </managed-bean>
      <managed-bean>
        <managed-bean-name>showUserDetails</managed-bean-name>
        <managed-bean-class>foo.ShowUserDetailsBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
          <property-name>userService</property-name>
          <property-class>foo.UserService</property-class>
          <value>#{userService}</value>
        </managed-property>
        <managed-property>
          <property-name>userId</property-name>
          <property-class>java.lang.String</property-class>
          <value>#{param.userId}</value>
        </managed-property>
      </managed-bean>Finally, you just make your webpage as you normally would...
    <h:outputText value="#{showUserDetails.user.userId}"/>
    <h:outputText value="#{showUserDetails.user.firstName}"/>
    <h:outputText value="#{showUserDetails.user.lastName}"/>
    Now you're ready to test, so you visit the page
    http://www.domain.com/showUserDetails?userId=50
    And your user details with userId=50 appears!
    It's just that simple!
    Regards,
    Doug
    Caveat: I haven't added any sample logic to handle cases where you visit:
    http://www.domain.com/showUserDetails
    without specifying a userId. I suggest you add some basic logic to your page to handle this case more gracefully.

  • I have a new laptop and want to transfer my itunes music across from the old one. What's the easiest /quickest method?

    I have a new laptop and want to transfer my itunes music across from the old one. What's the easiest /quickest method?

    Refer to this article:
    iTunes: Back up your iTunes library by copying to an external hard drive
    http://support.apple.com/kb/HT1751

  • What is the direct connect method for transfering photos from my macbook pro to my iphone without using iTunes syncronization? (iow: a simple photo copy from mac to iphone?)

    I feel like I should know the answer to this. I can't believe it is a hard question.
    What is the direct connect method for transfering photos from my macbook pro to my iphone without using iTunes syncronization? (iow: a simple photo copy from mac to iphone?)
    Easy? Right?
    Just plug my iphone in to a mac and copy a photo from the mac to my iphone.
    I don't have internet access - I can't email it, or mobileme it, or dropbox it.

    iTunes. Other than that there is no direct method. However, do try the iPhone forums.

  • What is doing DCExecutableBinding isRefreshed() method?

    Hi,
    I would like to know what is doing DCExecutableBinding isRefreshed() method.
    http://docs.oracle.com/cd/E15051_01/apirefs.1111/e10653/oracle/adf/model/binding/DCExecutableBinding.html#isRefreshed%28%29
    More precisely, I have a DCIteratorBinding, and I whant to know when isRefreshed() method will return true. Why with some iterators I got true sometimes, and why with other I got false all the time?
    Edited by: h0s on 9 déc. 2011 08:18

    We have a UIShell based on Steven Davelaar UIShell :
    http://blogs.oracle.com/jheadstart/entry/core_adf11_uishell_with_dynamic
    If I ask this, it is beacause of a different behavior in "Marking Tab Dirty" functionality.
    I try to understand why in some taskFlows it works fine, and why in other, I have DCIteratorBinding .isRefreshed() always returning false.
    Can you say me when isRefreshed() method will return true?

  • What is the functionality CALL METHOD CL_GUI_CFW= FLUSH

    Hi,
    What is the functionality of method "FLUSH" in class CL_GUI_CFW
    Should it be used after every call method CL_GUI_FRONTEND_SERVICES=>......
    What is the purpose of using it? What happens if we don't use it?

    hi
    good
    The class CL_GUI_CFW contains static methods that apply to all instantiated custom controls when you call them.
    You can force a synchronization point in your program by calling a method that is not buffered, or by calling the static method FLUSH.
    CLASS event_handler IMPLEMENTATION.
      METHOD handle_f1.
        DATA row TYPE i.
        MESSAGE i888(sabapdocu) WITH text-003.
        CALL METHOD sender->get_selection_pos
             IMPORTING from_line = row.
        CALL METHOD sender->get_line_text
             EXPORTING line_number = row
             IMPORTING text = field.
        CALL METHOD cl_gui_cfw=>set_new_ok_code 
             EXPORTING new_code = 'F1'.         
        CALL METHOD cl_gui_cfw=>flush.
      ENDMETHOD.
    thanks
    mrutyun^

  • What's the chain of methods called for painting components?

    Hi, I'm trying to find out at what point components are painted within a container, as in what methods are being called for that component to be rendered to the graphics context.
    I've tried watching for calls going to paint, paintAll and paintComponents, but if a component has been added to a container it seems that even if I override all of those methods of the container the components that have been added still get displayed.
    So I suppose I have two questions:
    * - What is the chain of methods called when a container is told to paint/repaint itself?
    * - What are the purpose of paintAll & paintComponents, I can't find anything that actually uses these calls.
    Thanks in advance,
    L

    Well it seems that the paint method of the component is being called from sun.awt.RepaintArea.paint(...) which itself is being kicked off from handling an event that's been thrown.
    That's clearer now....but has anyone seen when paintAll, paintComponents or the printXXX counterparts have actually been called by a part Sun's code? I can see how they (Sun) would advocate a practice lke this, but it would seem kinda lame for them to suggest it and then for them not to use it themselves.....that's why I think there's probably something in the JRE that does call these methods at sometime....can anyone cast some light on this?

  • Does somebody know,what diffrence between overide a method or to hide?

    Hi All!
    Does somebody know,what diffrence between overide a method or to hide?
    Thanks.

    Static methods are class methods. This means you can
    access them without having any existing instances of
    the class (className.methodName()).True. Further, I would argue that the language designers made a mistake in allowing static methods to be accessed via variables, since it only seems to add confusion.
    A static method (or any other method in fact) can be
    overriden by a sub class as long as it's not declared
    final in the superclass.Not true. A static method can be hidden by a subclass;Only instance methods can be overridden. If you disagree with this, please take time to read the link in one of my earlier posts, and look at the examples here:
    http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#39617
    The difference between overriding and hiding can be demonstrated by the code below:
    class Superclass {
      public void instanceMethod() {
        System.out.println("Superclass.instanceMethod");
      public static void classMethod() {
        System.out.println("Superclass.classMethod");
    class Subclass extends Superclass {
      public void instanceMethod() {
        System.out.println("Subclass.instanceMethod");
      public static void classMethod() {
        System.out.println("Subclass.classMethod");
    public class MainClass {
      public static void main(String[] argv) {
        Superclass x = new Subclass();
        x.instanceMethod();
        x.classMethod();
    }The output is:
    Subclass.instanceMethod
    Superclass.classMethodThe instance method has been overriden and the class method has been hidden. The difference is:
    When you override a method, you are effectively saying "use this implementation instead of the one in the superclass", and client code has no way of calling the superclass' implementation. The implementation has been replaced.
    When you hide a method, the original implementation from the superclass can still be called by client code, via the superclass' class name, or a variable whose compile-time type is that of the superclass.

  • What's wrong with my method

    I have a method with 2 parameters:
    public void getFileInfo(int array_length,String user_name)
    int arraylength=array_length;
    username=user_name;
    downloadname_files = new String[arraylength];
    displayname_files = new String[arraylength];
    size_files = new String[arraylength];
    date_files = new String[arraylength];
    but when I call this method I get a IllegalStateException?
    Can't I pass a parameter that will give the length of my array???
    when I delete the parameter that will determine the arraylength and I replce this arraylength value with foe example 2 then I get no more errors??
    ANY IDEAS????

    WEIRD!!!!!!!!!!!!!!
    I'm using this function from a jsp page, and I can't pass anything more than this username. I tried debugging and even if I didn't call this method I still get the error, now I temporarly deleted the arraylength parameter and everything works fine, though I still can not pass that specific parameter
    perhaps I should write a simple get method to require the value instead of passing it through

  • Is there any native method for converting String value to Hungarian notat..

    Hello. there.
    This might be very simple question. but I'm just curious about this.
    I am wondering if Java API offer the any native method for converting uppercased string value to lowercase which obey the Hungarian notation.
    What I'm going to do is using Reflection for excuting RFC function on SAP. I was found it is very similar to JDBC Programming.
    Please refer to blow codes.
    //mTable
    JCoTable mTable = function.getTableParameterList().getTable(rtnTblNm);
        for (int i = 0; i < mTable.getNumRows(); i++) {
         mTable.setRow(i);
         HashMap tmpData = new HashMap ();
              for (int j=0; j < mTable.getNumColumns(); j++) {
                     // I want to set key String [userNo] instead of  [USER_NO] here.
              tmpData.put(mTable.getMetaData().getName(j).toLowerCase(), mTable.getString(j));
              result.add(tmpData);
    } Basically, The idea was from ibatis framework [com.ibatis.common.beans.classInfo] dropcase();
    Any idea would be very helpful for me. Thank you.
    Edited by: hosung.seo on Aug 30, 2009 10:42 PM
    Edited by: hosung.seo on Aug 30, 2009 10:50 PM

    ejp wrote:
    Hungarian notation is a representation of logical/arithmetic expressions in postfix form. Not what you're talking about.
    So your title is very confusing to the people here who know what it means, which is probably all of them, because people read threads based on their title.From now on, I will pay more attention when I post an question.
    If the titile as " +Is there any native method for converting String value to camelcase?"+ would be easier to what i'm pointing at.
    As I mentioned in above sorce code, converting [USER_NO] to [userNo] isn't relevant Hungarian notation. yes, it was ambiguous. Agree! :)
    But some answer wasn't fit to converting case or recognizing "underscore" delimiter. I was expecting toCamelCase() such as blew. Thanks.
        public static String toCamelCase(String name) {
            String lowerName = name.toLowerCase();
            String[] pieces = lowerName.split("_");
            if (pieces.length == 1) {
                return lowerName;
            StringBuffer result = new StringBuffer(pieces[0]);
            for (int i = 1; i < pieces.length; i++) {
                result.append(Character.toUpperCase(pieces.charAt(0)));
    result.append(pieces[i].substring(1));
    return result.toString();

  • Methods returning the wrong values...

    Hi,
    I've managed to get my hands on vb6 (though, it would be really nice if there was vb .net support.. I thougt this was coming in 1.5?) and have run into a rather odd problem. get Methods seem to return values from the wrong methods! For example, let's pretend my activex control stores values about a person. getName would return their age, while getAge might return null! Something is also going wrong with my method that accepts input and returns a value (okay, it is a money conversion program!)... it is returning null!
    I have verified that all these methods work perfectly by running the code in JBuilder with a Main class.
    Any idea what to do?
    (or how to make it work in .net!!!)
    Thanks!

    Wow!! I think the key was using the CreateObject command. I was adding it as a control, like I would a textbox. Things are working perfectly as far as I can tell! I wonder how I am supposed to test it in the vb6 testbox then.. Hrm.. Odd.
    This is great, though!! Thanks so much. :)

  • Standard method for storing gps values

    what is the standard method to store gps values in database tables.

    user10447332 wrote:
    for storing gps values oracle spatial is copmulsary? is there any alternative solutionYou hijacking the OP's thread?
    I assume you mean "compulsary". ;)
    No, nothing is compulsary, you could store GPS values in your own data structure if you choose. However Oracle spatial is usually the place where spatial data such as GPS values are processed.
    Depends what you want to do with it.

  • "File Browse" type item: at what point the fields mime_type, file_name, last_update_date get their values?

    Hi there,
    I have an issue with "File Browse" type item, my question is: at what point the fields mime_type, file_name, last_update_date get their values? I want to add them to the collection but if I try to do it in Process "On Submit - After Computations and Validations" the values in those fields are still null (that's for the insert, and for the update they have old values). Also I don't seem to be able to add blob to the collection ("File Browse" type item (which has the source as blob database column) can't be assigned as parameter p_blob001 of APEX_COLLECTION.ADD_MEMBER, error is: PLS-00306: wrong number or types of arguments in call to 'ADD_MEMBER').
    What I am trying to do is this: I have parent table (TABLE1), and child table (TABLE2).  In TABLE2 I store documents. I have a main page that is form on TABLE1, and on it I have button "Add documents" that opens popup window with form on TABLE2. On submit of popup page I want to avoid inserting document into TABLE2, instead I want to send data to the main page (using collection) and insert in only once the main page is submitted.
    I would appreciate any advice on this...
    Thanks,
    Tanya

    Hello Tanya,
    Can you post your PL/SQL code which you are trying?
    Regards,
    Hari

  • What formula do I use to show the net value (less 23% tax).

    In Numbers, what formula do I use to show the net value (i.e. less 23% tax).

    thejuddo writes:
    "$100 plus sales tax of 23% would be $123.00 but in order to get the net value of $123.00 less the tax I would have to divide by 1.23 not multiply by 23% and then minus it."
    Correct;
    The 23% tax is 23 one hundredths of the base amount, and is applied to that amount. As a formula, this can be stated as:
    =B2+B2*C2
    or
    =B2*(1+C2)
    (either applying to the data arrangement shown in the top table, and entered in  D2 of that table)
    In the other direction, though (bottom table), we start with the Gross amount and the Tax rate as known quantities, from which we are to determine the base amount, remembering that the 23% Tax rate is 23% of the Base amount, not 23% of the Gross amount.
    Rewriting the two formulas above as equations, with g, b, and t as the variables, we get:
    g = b + (b * t) 
    g = b(1+t)
    Solving the second for b:
    b - g/(1+t)
    Expressed as a formula (with the data as arranged in the bottom table, and the formula in D2):
    D2: =B2/(1+C2)
    In both directions, it may be prudent to round the result to the nearer hundredth, as done here for the calculation immediately above:
    =ROUND(B2/(1+C2),2)
    Regards,
    Barry

  • [svn] 4059: The measure() and updateDisplayList() methods of TextBox and TextGraphic now return early if the inheritingStyles and nonInheritingStyles proto chains haven 't been initialized, to avoid RTEs in the compose() method from invalid styles values.

    Revision: 4059
    Author: [email protected]
    Date: 2008-11-10 11:56:38 -0800 (Mon, 10 Nov 2008)
    Log Message:
    The measure() and updateDisplayList() methods of TextBox and TextGraphic now return early if the inheritingStyles and nonInheritingStyles proto chains haven't been initialized, to avoid RTEs in the compose() method from invalid styles values.
    QE Notes: None
    Doc Notes: None
    Bugs: SDK-17975
    Reviewer: Jason
    Ticket Links:
    http://bugs.adobe.com/jira/browse/SDK-17975
    Modified Paths:
    flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextBox.as
    flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextGraphic.as
    flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/graphicsClasses/TextGraphicEleme nt.as

    FYI - This regression has been filed here: http://bugs.adobe.com/jira/browse/SDK-31989

Maybe you are looking for

  • How can I drag and drop an item from one Tree control to another in LabVIEW 7.1?

    You can use the mouse up and down event on the two tree controls but the problem is making the correct selection in the second tree control. I want to be able to switch over to the selection bar of the second tree control so that I can place my item

  • Error when adding a partition to a materlialized view

    Hi, I am getting this error when adding a partition to a materialized view. ALTER MATERIALIZED VIEW mvedw.MV_CLM_CAPITN_F ADD PARTITION MAR2013 VALUES LESS THAN ('201304') ERROR at line 1: ORA-14074: partition bound must collate higher than that of t

  • Question about Automator using Spaces.

    I don't think this is the right place for this question, but I figured I am probably going to need to write an applescript to do what I want, so I decided to put it here. I have an automation to open some Word documents on my idisk, then open Diction

  • Substitution in F.19 for posting account

    Hi all, Is it possible to create a substition rules to replace an account in f.19 posting? In fact, the customizing for F.19 is by chart of account. But in our case, we have 2 differents company code with 2 different need on the same chart of account

  • How to calculate length of textfield

    Folks, Please tell me how to find of length of textfield in a form. length function of javascript doesn't work on rawValue. Thanks, Manish