Re: Re: Exposing XForm as a web service

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: Re: Exposing XForm as a web service

Erik Bruchez
Administrator
Boris,

Yes, this is clearer. You could do the following:

* Have the web service set a "flag" along with data received into  
storage, like a local database.

* Block the web service until further notice, e.g. by polling in the  
database or other synchronization mechanism.

* Communicate to a connected user that the flag has been set. This  
could be done through polling, i.e. the user's web browser must  
periodically check whether the flag has been set or not.

* Once the user detects that the flag is set, take some action, such  
as displaying the data sent though the web service.

* Once the user takes some action, such as approving the data or  
filling-out more data, store the result into storage.

* Unblock the web service call.

* The web service returns with the information from the user.

This makes the assumption that until the user is connected to a page  
that has the polling functionality above, the web service will just  
wait. I am not sure I can see how this could work differently.

This clearly requires quite a bit of implementation work. It is not  
built-in functionality.

Another approach could consist in having the web service just putting  
the information to check in a queue. The operator's UI periodically  
updates with the latest information in the queue. Once a piece of  
information is approved, the application calls another web service  
which continues the processing. This would avoid the issue of blocking  
the initial web service, and that is one synchronization problem to  
solve.

Does this help?

-Erik

On Feb 24, 2008, at 7:50 AM, Boris Dushanov wrote:

> Hi Erik,
>
> as described in the orbeon tutorial,the way to implement a web  
> service is to
> create an xpl file which handles the request and returns a  
> response.This is
> possible with processors provided by orbeon package.What I'd like to  
> do is to
> extend a little bit the idea of just handling the request and  
> sending a
> response without user interaction.I'm wondering if it is possible to  
> implement
> as a part of my web service, a user interaction on some step of  
> processing the
> response.
> For example a SOAP message with some data is sent to my web  
> service,and that
> data should be verified by an operator before sending the response
> back.Received data may be  represented in a XForm with a submit  
> button.The
> operator checks data and submit it - submitting data send the  
> resposne back to
> the client of my web service.That's it.
>
> Is the idea clearer now ?
>
> Please ask if something is still not clear.Thanks for your help !
>
> Regards,
> Boris
--
Orbeon Forms - Web Forms for the Enterprise Done the Right Way
http://www.orbeon.com/



--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

Re: Re: Re: Exposing XForm as a web service

Boris Dushanov
Hi Erik,

yes,both ideas are clear.What if the so called operator who checks data
and submit it could not reply instantly but a week later for example.It
is not possible to keep many clients' connections for such a long period
of time.The perfect scenario for me would be :
    - process the request
    - store data in a database for example
    - generate an unique URL for that specific request
    - send a mail to the operator who has to handle that request with
the URL generated in the previous step
    - the operator uses that URL which points to a xform and submit data
In this case the connection is not kept.Is there a mechanism in the
orbeon which could handle such cases and reply to the client of the web
service not in the context of the initial request
connection?Xml-serializer processor seems to be too simple for handling
such scenarios.

Regards,
Boris


Erik Bruchez wrote:

> Boris,
>
> Yes, this is clearer. You could do the following:
>
> * Have the web service set a "flag" along with data received into
> storage, like a local database.
>
> * Block the web service until further notice, e.g. by polling in the
> database or other synchronization mechanism.
>
> * Communicate to a connected user that the flag has been set. This
> could be done through polling, i.e. the user's web browser must
> periodically check whether the flag has been set or not.
>
> * Once the user detects that the flag is set, take some action, such
> as displaying the data sent though the web service.
>
> * Once the user takes some action, such as approving the data or
> filling-out more data, store the result into storage.
>
> * Unblock the web service call.
>
> * The web service returns with the information from the user.
>
> This makes the assumption that until the user is connected to a page
> that has the polling functionality above, the web service will just
> wait. I am not sure I can see how this could work differently.
>
> This clearly requires quite a bit of implementation work. It is not
> built-in functionality.
>
> Another approach could consist in having the web service just putting
> the information to check in a queue. The operator's UI periodically
> updates with the latest information in the queue. Once a piece of
> information is approved, the application calls another web service
> which continues the processing. This would avoid the issue of blocking
> the initial web service, and that is one synchronization problem to
> solve.
>
> Does this help?
>
> -Erik
>
> On Feb 24, 2008, at 7:50 AM, Boris Dushanov wrote:
>
>> Hi Erik,
>>
>> as described in the orbeon tutorial,the way to implement a web
>> service is to
>> create an xpl file which handles the request and returns a
>> response.This is
>> possible with processors provided by orbeon package.What I'd like to
>> do is to
>> extend a little bit the idea of just handling the request and sending a
>> response without user interaction.I'm wondering if it is possible to
>> implement
>> as a part of my web service, a user interaction on some step of
>> processing the
>> response.
>> For example a SOAP message with some data is sent to my web
>> service,and that
>> data should be verified by an operator before sending the response
>> back.Received data may be  represented in a XForm with a submit
>> button.The
>> operator checks data and submit it - submitting data send the
>> resposne back to
>> the client of my web service.That's it.
>>
>> Is the idea clearer now ?
>>
>> Please ask if something is still not clear.Thanks for your help !
>>
>> Regards,
>> Boris
>
> --
> Orbeon Forms - Web Forms for the Enterprise Done the Right Way
> http://www.orbeon.com/
>


--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

Re: Re: Re: Re: Exposing XForm as a web service

Erik Bruchez
Administrator
I do think it is best to not block the web service and store the data  
in a queue.

There is nothing specifically in Orbeon to "respond" to a web service  
asynchronously, but this is a common Web Service pattern. If you  
Google it, you will find plenty of information about it, e.g. this  
article:

   http://www.ibm.com/developerworks/library/ws-asynch1.html

Or this about integration with JAX-WS:

   http://today.java.net/pub/a/today/2006/09/19/asynchronous-jax-ws-web-services.html

It is quite possible that you could without modifications in Orbeon  
Forms respond to a service, get the correlator information, and then  
just call back the original system with that information and the data  
filled out by the user. You can call Web Services directly from  
XForms, or using the oxf:delegation processor.

But we haven't tried anything exactly like this so far. Has anybody on  
the list?

At any rate it sounds very interesting!

-Erik

On Feb 26, 2008, at 1:47 AM, Boris Dushanov wrote:

> Hi Erik,
>
> yes,both ideas are clear.What if the so called operator who checks  
> data
> and submit it could not reply instantly but a week later for  
> example.It
> is not possible to keep many clients' connections for such a long  
> period
> of time.The perfect scenario for me would be :
>    - process the request
>    - store data in a database for example
>    - generate an unique URL for that specific request
>    - send a mail to the operator who has to handle that request with
> the URL generated in the previous step
>    - the operator uses that URL which points to a xform and submit  
> data
> In this case the connection is not kept.Is there a mechanism in the
> orbeon which could handle such cases and reply to the client of the  
> web
> service not in the context of the initial request
> connection?Xml-serializer processor seems to be too simple for  
> handling
> such scenarios.
>
> Regards,
> Boris
>
>
> Erik Bruchez wrote:
>> Boris,
>>
>> Yes, this is clearer. You could do the following:
>>
>> * Have the web service set a "flag" along with data received into
>> storage, like a local database.
>>
>> * Block the web service until further notice, e.g. by polling in the
>> database or other synchronization mechanism.
>>
>> * Communicate to a connected user that the flag has been set. This
>> could be done through polling, i.e. the user's web browser must
>> periodically check whether the flag has been set or not.
>>
>> * Once the user detects that the flag is set, take some action, such
>> as displaying the data sent though the web service.
>>
>> * Once the user takes some action, such as approving the data or
>> filling-out more data, store the result into storage.
>>
>> * Unblock the web service call.
>>
>> * The web service returns with the information from the user.
>>
>> This makes the assumption that until the user is connected to a page
>> that has the polling functionality above, the web service will just
>> wait. I am not sure I can see how this could work differently.
>>
>> This clearly requires quite a bit of implementation work. It is not
>> built-in functionality.
>>
>> Another approach could consist in having the web service just putting
>> the information to check in a queue. The operator's UI periodically
>> updates with the latest information in the queue. Once a piece of
>> information is approved, the application calls another web service
>> which continues the processing. This would avoid the issue of  
>> blocking
>> the initial web service, and that is one synchronization problem to
>> solve.
>>
>> Does this help?
>>
>> -Erik
>>
>> On Feb 24, 2008, at 7:50 AM, Boris Dushanov wrote:
>>
>>> Hi Erik,
>>>
>>> as described in the orbeon tutorial,the way to implement a web
>>> service is to
>>> create an xpl file which handles the request and returns a
>>> response.This is
>>> possible with processors provided by orbeon package.What I'd like to
>>> do is to
>>> extend a little bit the idea of just handling the request and  
>>> sending a
>>> response without user interaction.I'm wondering if it is possible to
>>> implement
>>> as a part of my web service, a user interaction on some step of
>>> processing the
>>> response.
>>> For example a SOAP message with some data is sent to my web
>>> service,and that
>>> data should be verified by an operator before sending the response
>>> back.Received data may be  represented in a XForm with a submit
>>> button.The
>>> operator checks data and submit it - submitting data send the
>>> resposne back to
>>> the client of my web service.That's it.
>>>
>>> Is the idea clearer now ?
>>>
>>> Please ask if something is still not clear.Thanks for your help !
>>>
>>> Regards,
>>> Boris
>>
>> --
>> Orbeon Forms - Web Forms for the Enterprise Done the Right Way
>> http://www.orbeon.com/
>>
>
>
> --
> You receive this message as a subscriber of the [hidden email]  
> mailing list.
> To unsubscribe: mailto:[hidden email]
> For general help: mailto:[hidden email]?subject=help
> OW2 mailing lists service home page: http://www.ow2.org/wws
--
Orbeon Forms - Web Forms for the Enterprise Done the Right Way
http://www.orbeon.com/



--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws