New BSSV called by BSFN problem

gigi

gigi

VIP Member
Hi all
I created a new BSSV and called it froma business function. Now I'm testing it calling business function from an interactive application (a simple button).
There is a strange behavior because business function is called twice. I attach log where you can see my BSFN ManageAddressBookAS400 is called two times. I ensure you it's called only one time from interactive application button.
I analyzed log and both times BSFN return 100 that means C api jdeCallBusinessServiceNoResponse has been called correctly.
After few lines in log there is an error "KNT0000068 - jdeCallObject failed for ManageAddressBookAS400"

The question is....why business function is called two times? because first call teminate with error? if yes who tell to jde engine to recall BSFN?

I attach also my business function

thanks in advance
gg
 

Attachments

  • 161902-BY59BSSVandLOG.zip
    22.2 KB · Views: 229
Another information. If I comment the API call jdeCallBusinessServiceNoResponse in my business function, business function is called only one time, so the problem is related to BSSV call

My release is EO 9.00 and TR 8.98.3.2 (Windows 2008 platform)
gg
 
Hi Gigi

I don't suppose it's something as simple as your BSSV making a function call to ManageAddressBookAS400 would it? Take a look at the bssv.log to make sure.

Also, have a look in your jas.log to ensure that the function isn't being called a second time from ER, for any weird reason.

Incidentally, your function is ending in error since you're returning idReturn at the end of the function, rather than ER_SUCCESS.

Also, not a major issue, but your method name ManageAddressBook should start with a lowercase character. You may run into problems later when deploying the BSSV if you're using Websphere (OAS is a little more tolerant, though).

Regards,
Dave
 
About nine months ago my company upgraded to 9.0 and had this problem with many of our business functions, and I think I know how to help you. It sounds like it's a timing issue.

When a BSFN is called from an interactive application, there is a time limit for it to run. When the time limit expires, the application attempts to call the BSFN again, thinking it has encountered an error. If the BSFN takes too long again, the application throws an error. Meanwhile, the BSFN still completes as it normally would on the application server (still returning an error, but otherwise doing what it needed to do). How long is this process taking you? I believe the default timeout setting is 90 seconds for 8.98.

The way we got around this was by creating a new BSFN that only launched a UBE, which in turn called the original BSFN. Because UBEs don't have the time limit problem that applications have, the BSFN can now run for as long as it needs to without error, and other than the problem of synchronization, the end user only knows that they press the button and then their job completes.

So here's how you did it:
<font class="small">Code:</font><hr /><pre>
App calls BSFN A
BSFN A times out
App calls BSFN A again
BSFN A times out
App throws an error
</pre><hr />

And here's what you can try
<font class="small">Code:</font><hr /><pre>
App calls BSFN B
BSFN B launches UBE A
UBE A launches BSFN A
BSFN A runs as long as it needs to
</pre><hr />

If you need more clarification, please let me know.
 
Thanks Dave, problem was related to return variable I setted in my business function. I returned the variable returned by jdecallbusinessservice. So business service was called correctly and returned 100, I passed back 100 from my Business function and this strange behavior happens. I changed return instruction of my business function : ER_SUCCESS or ER_ERRRO.
Now works correctly
thanks
gg
 
I have faced such strange issue when using BSSV thru call object kernel. This can be due to the timeout issue as stated in earlier post if you want to find out.

Chan
 
Back
Top