How to pass parameters to the ABL Class? - Forum - Kendo UI Builder - Progress Community

How to pass parameters to the ABL Class?

 Forum

How to pass parameters to the ABL Class?

This question has suggested answer(s)

I have a gridview in Kendo UI Builder, and I want to pass parameters to the Read method which is setup to accept a "filter" parameter. 

The data source is set for Client Side Processing, which is what I want, but I want to start with a subset of data using an initial filter value. 

I have disabled autobind, so the gridview isn't initially pulled

   in onShow - this.$components.psLogGrid.options.autoBind = false;

I have a text fill in and a button which runs the javascript below which I want to pass in to the Read method in ABL Class.

However, the value filter in the browser is "Object", and the value in the Read method is ? 

Does anyone know how to do what I thought would be a simple process of passing in a parameter to the Read method? Perhaps I am setting the value of filter incorrectly below? 

Thanks for your help.

// Fired when user selects the button. tbProcess is the name of the text fill in, and I have validated angular.element('#tbProcess').val(); is the correct value that I want.

    filterByProcess($scope) {
                    
                debugger;
                
        var dataGrid = this.$components.psLogGrid.widget;     
        var value = angular.element('#tbProcess').val();

        console.log("value " + value);

        if (value) {
                     var filter = {
                                        logic:'and',
                                        filters: [
                                                { field: 'processName', operator: 'contains', value: value }
                                        ]
                        };
                        this.$ds['psLog'].filter(filter);
        } else {
                        this.$ds['psLog'].filter({});
        }

    
             console.log("Filter - " + filter);   
        
    }
All Replies
  • If you see nothing in Response Data in the Catalog Viewer, then it would mean that the invoke operation failed.

    The Network tab in the Developer Tools in web browser would also show that a 404 error happened internally.

    Note: The Network tab would also show the details of the request. You would see there that the filter is set to something like:

    {"skip":0,"top":5}

    In the URL, you see the encoded representation.

    The 404 error would mean that the deployed service does not have the method or an error happened on the server side.

    You can check the following files:

    1) oepas1/webapps/psLogGUI/WEB-INF/adapters/rest/psLogGUIService/stagingDir/resourceModel.xml file: This file should have a reference to the MyCount path.

    2) oepas1/logs/oepas1.agent.log: In this file, you should see whether there were errors while executing the method in the Business Entity. You can add MESSAGE statements to the Business Entity class for additional debugging.

    If would like to have someone look at this environment with you, perhaps, you could contact Technical Support to get assistance and look at the issue via screen sharing. I can also join to see the issue and provide suggestions.

    I hope this helps.

  • Curtis,

    I just tested one of my services with PostMan and it works correctly to get 25 records, skipping the first 50.

    PUT: [URL to Service]/count

    Content-Type: application/json

    Body:

    {

    "filter": "{\"skip\": 50, \"top\": 25}"

    }

    To apply this filter to the GET I used the following URL to get 5 records starting with the first:

    [URL to Service]/?filter=%7B"skip"%3A0%2C"top"%3A5%7D

    To return 10 records, skipping 15, use the following:

    [URL to Service]/?filter=%7B"skip"%3A15%2C"top"%3A10%7D

    Hope this helps.

    Louis

  • I tried the following in Postman

    PUT  localhost:8810/.../MyCount

    Form data: Key Content-Type   Value: application/json

    Body (raw)

    {

    "filter": "{\"skip\": 50, \"top\": 25}"

    }

    And, I get  -  404 Not Found

    If I do PUT  localhost:8810/.../MyCount

     with no other parameters I get 404 Not Found

    If I do GET

    localhost:8810/.../psLogHdr

    I get all the records

    I have verified MyCount is in the Catalog and shows up using the catview.html tool.

  • Please notice that filter is a query string parameter and would not go in the body of the request.

    Could you check that the there is a reference to MyCount in the resourceModel.xml?

    Do you see any errors in the agent log file?

  • Sorry about that Edsel. I just took a look at the way KUIB (more accurately the JSDO) sends the criteria for the count method, and I didn't realize that it sends the values as URL parameters and not via the body. I assumed wrongly based on the fact that this was a PUT rather than a GET (as used by the read method for a resource).

  • As I mentioned on the phone, I tried making a brand new project, added the JSP stuff, and added the resource to the service, and again, MyCount is NOT added to C:\OpenEdge\WRK\oepas1\webapps\psLogGUI\WEB-INF\adapters\rest\psLogGUIService\stagingDir

    resourceModel.xml

    I am thinking of trying rebooting my PC and try again and/or remove all services and try again. Other than that, reinstalling Progress is the next thing I would try. Any suggestions?

  • Curtis,

    A reboot wouldn't hurt, but I am not confident it will address your problem.  The PDSOE team has this as a bug and has supposedly fixed it on OE 11.7 Service Pack 2.

    Service Pack 2 release target is end of October (early next week if all goes well).  Would be possible for you to hold until it is release? I believe the best path would be install the Service Pack 2 (instead of re-installing your current OE).  

    I would keep monitoring it for you and let you know as soon as it is release.  I would also schedule a call to help you install and test the outcome.

    Please let me know if this is acceptable,

    Regards,

    Ricardo Perdigao

  • Ricardo, Thanks. Yeah, I will standby and wait for SP 2 for Server Side work. In the meantime, I may go try to figure out how to pass parameters using Client Side processing. Any how Tos or examples on that would be appreciated.