As nkuebelbeck said it will be difficult. Not impossible, but difficult.
We have done this. User presses a button that launches a UBE with a BI Pub template and when it completes the BI Pub output opens on the client. We all ready had several components developed before we did this. Namely we have developed a general purpose UBE polling BSFN that will poll the job, sleep, poll again, sleep, etc. (sleeping so we don't hammer the DB server). I believe we even had to further modify that BSFN for this purpose to return the necessary BI Pub info and I believe the BI Pub generation appeared to be somewhat async from the UBE job status so we had to account for that as well.
You also have to account for things like BSFN timeout settings. In other words you can't just let the UBE Polling BSFN run indefinitely until the UBE completes because your BSFN call from the JAS server to the ES server will timeout (and you also don't want to show an hourglass to the user for 2+ minutes). You have to respond back to the client at some point if the UBE takes to long, maybe even give them the option to continue waiting, etc.
Oh and one more thing. You have to develop all this. So you have to construct everything so that when running on local web dev client it still launches the UBE on the server for development purposes. Our polling BSFN requires a pointer to a UBEVAR used to launch the UBE so for us you also have to launch the UBE from a C BSFN which is where we handle the local web dev client stuff.
It was not a trivial endeavor, but it can be done.