Here are a few comments on the proposed API.
Btw, i 'd like to put this api in svn (under ode/scratch/ode/iapi, with a package name
of org.apache.ode.iapi) so that it will be easier to track things, but some
of the files have headers copyrighted to FiveSight. Is that on purpose ?

Event scheduler:
 * How are scheduled events sent to the BPEL engine ?
 * In Scheduler#scheduleVolatileJob, what is the transacted parameter ?
* Which implementation classes should be provided by the integration layer ?
    It seems that all the interfaces but BpelServer and BpelEngine have to
    be provided.

Persistence: In the case where the BPEL engine is invoked in a request / response pattern, but the process can not finish in the current transaction, there may be a need for the integration layer to persist some data, so that the response can be sent by the integration layer. For example a JMS integration layer may need to persist the replyTo destination, or a JBI integration layer may need to persist the JBI exchange. This persistent data should be made available when one of the MyRoleMessageExchange.reply will be invoked by the BPEL engine. Such informations
   may be stored on the MyRoleMessageExchange, or keyed by the
   MyRoleMessageExchange#getMessageExchangeId.

 1) What is the lifecycle of the MyRoleMessageExchange ?
    If this object stored by the BPEL engine and recreated upon restart ?
 2) Should needed persistent informations be put on this object ?
 3) When will the MessageExchangeContext#resolveMessageExchange be used ?
4) Could the burden of creating a persistence layer could be put on the BPEL engine
    (that needs one in any case) instead of the integration api ?

Use of EnpointReference:
   When the integration layer calls BpelEngine#invokeProcess, it gives a
   MyRoleMessageExchange implementation that contains an EndpointReference.
When the MessageExchangeContext#invokePartner is called by the BPEL engine, the integration layer receives an EndpointReference. As this is the only
   data given to identify the invoked BPEL process / external service, the
format of this endpoint has to be common to both sides. What is this common format ? Why not just use the portType qualified name (which is the only information
   provided by the bpel process) instead of the endpoint reference ?
Also, the bpel schema allows the addition of attributes and elements defined in an external namespace. Such informations can provide a simple way for the end-user to provide meta-informations for the integration layer, instead of having to rely on an external configuration file. For example the invoke bpel element could contain attributes / elements that the integration layer
   would use to send the request.
Transactional transports, request / response:
   From the javadoc of the MessageExchangeContext#invokePartner:
"In all cases, this method MUST NOT block, and actual invocation MUST be deferred" This means the invokePartner method should not actually perform anything, but just store the fact that the request must be send at a later time within the transaction ? The same thing happens when invoking the BPEL engine: the response, if provided synchronously,
   will be provided by a callback.
   Is that a side effect of pi-calculus reduction ?
Such a mechanism is great when the integration layer is asynchronous, but if the integration layer can do the needed work to defer processing of the partner response and take back the BPEL process response, the BPEL engine should be able to do that also
   (maybe using a thin layer on top of the engine).
Message:
   The message interface is minimalist, but may be enhanced to provide
   at least a way to retrieve the existing part names.
Support for document centric invocations (WSDL 2) WSDL 2 and JBI mainly use document centric invocations (there is only one unnamed part,
   not several parts as in rpc mode).  Could such a thing be supported ?
Cheers, Guillaume Nodet
Maciej Szefler wrote:

As to the last points, attached is a proposed "Integration API". The
purpose of this API is to facilitate integration of the BPEL engine with
service technologies / messaging frameworks (e.g. JBI, Axis, Mule,
etc.).

Reply via email to