hi,
how about we move this discussion to some mailing list dedicated to web
services workflows (or we create one as they do not know any such list)?
i think that having this kind of discussion and sharing ideas would be
beneficial not only to us.
Christian Kloner wrote:
Aleksander Slominski wrote:
Christian Kloner wrote:
Does not know if i understood correct but using raw XML messages does
not mean that you forgo type handling. you can still validate against
schema if the SOAP envelope conforms to doc/literal or
doc/literal/wrapped (WS-I Profile). If you use a dynamic approach you
have to parse wsdl files and schemata anyway to know, how the SOAP
body message should look like.
yes and that is the catch - there no good libraries for that (at least i
do not know about) so you need to implement that yourself if you want
flexibility
but to my best knowledge, xml parser validation should be able to
handle this. but i am not 100% sure. anyway, i used wsdl4j and
XmlSchema API to get my own representation for the price of high
memory consumption.
how do you deal with persistence (when machine that running workflow
needs to be restarted etc)? this is a tough problem that effects design
on every level - if you use OO-DB mapping (iBatis below) then can you
persist your own representation instead of keeping it in memory.
I am really looking forward to apache woden (including wsdl 1.1
support if hopefully ever implemented).
AFAIK there were no plans for WSDL 1.1 support in woden or did they have
it now in plans?
description representation and used visitor pattern to visit the
descriptions to create a dynamic SOAP envelope. Only the values are
needed in the right order with special marks for array, complex type,
attribute. But this is implementation specific.
so what you did you implemented your own (as minimal as needed) type
handling code - not exactly a trivial task and always incomplete at best
considering level of complexity present in XML schemas (to get it right
i thhink you need team of minimum 5-10 people working for a year if not
longer ...)
In my approach, I transformed this information into internal
you are right. attributes and groups/choices (althouth marked in the
description model) are not supported. the rest should work if you use
DocLiteralWriter implementation. In case of RpcEncodedWriter, arrays
will additionally be not supported. to much work for one...
exactly (support of XML schemas is not exactly what i am interested in
or contributes ot my PhD) - but as long as you have a big enough subset
implemented to get user workflows to run that should be fine (and subset
can be extended later when needed) - lot of what you implemented in this
subset is what WSIF (and Apache SOAP, and AXIS, and ...) already did.
anyway, I have consideration to take description model out and work
directly on the XmlSchema (Apache XmlSchema API). Because at the
moment i transform the schemata with XMLSchema API into description
model.
what i do is different - i am looking in direction of supporting
_experimental_ and open ended building of workflows therefore ability to
change is the most important factor.
for that reason i actually avoid static checks instead rely on
just-in-time checking when interpreting XML representing workflow - the
reason i do it this way is that i am interested in supporting workflow
instances created in an ad hoc manner that are build incrementally by
modifying workflow during its execution (including trying what-if
scenarios, undo etc) - i would like eventually user to build a workflow
by just playing with tool that allows to record set of steps (such as
invoking external services) - you could think about such tool to be a
scientific experiment recorder :-)
that is different than building an engine to run production workflows -
such engines are focused on running instances of the same template and
that looks to me current bpel engines concentrate on. i am not really
interested to repeat it (even those need an extra flexibility to support
multiple versions of the same template as nothing is forever in IT ...)
Of course, if you have services using RMI or CORBA instead of SOAP you
need another abstraction layer where WSIF can help if it supports the
transport protocols. It's long time ago when i worked with it. :(
But the big advantage of Web service technology is to achieve
interoperability through standards revolving around XML. So I don't
think that another abstraction layer is really needed.
i agree however that also mean that you do not really need WSDL
abstraction as you work with XML and then just get XML infoset to be
sent the way of WSDL binding/service/endpoint - unfortunately current
Apache WSIF will not help you much to do it as it was designed and
implemented with Java types first and not with XML infoset first
approach (so that is why there is need for mapping of Java objects to to
representation for each WSDL/WSIF binding ...)
i think it would certainly be useful to have complementary WSIF that has
XML infoset first.
would be nice. but in my opinion, the third generation of web service
frameworks almost makes WSIF useless under assumption that you only
work with Web services. they can handle everything what is needed. in
the past it was fine to switch between the old apache soap engine and
axis engine but technologies are changing... but perhaps exactly there
is a new up wind for WSIF. I heard about new version with Axis2
support and if there was support for XFire or rather CeltiXfire, WSIF
would be a consideration again. So you are able not to bind to a
specific Web service framework.
yes - that would be good.
Seems that you are active using WSIF.
in XSUL i have XWSIF that is subset/superset of WSIF API with many
extensions (it includes for example support for handlers and directly
working with XML infoset for WSIFMessage)
i am really interested in how your implementation strategies are. do
you do any static code analyzing so far or rather do you use
XMLBeans to get BPEL in memory representation.
i concentrated on dynamic and adaptive aspects of workflows so *maximum*
flexibility was my goal so i avoided static type checking as much as
possible ... you could look on GPEL engine to have two responsibilities:
maintain workflow state as XML (as visible to clients) and model
workflow execution as XML transformations that follow BPEL rules (i only
implemented subset of BPEL as i am the only one implementing it and
moreover BPEL has much more than what is needed in scientific workflows
we run)
I also only have subset at the moment. In my implementation, workflow
state is in hsqldb database using iBatis, which is queried through
Globus Resource Properties.
so if i understand correctly you are mapping Java objects to SQL DB? if
so then how do you map this to XML to have WSRF (Globus GT4 right?)
properties?
if you do map DB to XML then it is an interesting approach but key
question is how flexible it is: is it read-only or read-write? do you
allow users to change those properties or only to view them?
i had an initial prototype of something like that when i was trying to
design gpel for GT3 - XML properties in OGSI (predecessor to WSRF)
provided a reflection like capability into workflow engine but their
semantics were not very well defined so i eventually moved to use ATOM
Protocol to support something very similar but simpler: instead of
properties i have a set of XML documents that are identified by URLs and
(hyper)linked together (using what ATOM provides for a:link) to
represent workflow state.
I hope I can ask you a few more questions and abuse this mailing list
for some other things.
yes but let move to some other mailing list :-)
So do you use XMlBeans (using Java classes created from xsd bpel
schema) to get BPEL representation?
no
getting bpel into memory and analysing it is a hot spot. I considered
to let this another service doing.
i actually do not care about one process performance (i only do
interpretation of workflow and no compilation - obviously with some
caching to keep some internal representation to speed it up but that is
very straightforward) instead i designed it for scalability - multiple
gpel engines can be started (or stopped) at any time on on any machines
as long as it is in one cluster - the only thing they share is DB - if
gpel starts to be slow i can start more processes on more machines (this
approach takes an advantage of workflow processing being embarrassingly
parallel - workflows are now aware of each other so yo can move
processing freely between cluster nodes)
some days ago, I looked at your Java client API(I don't know the
portal). Are there any considerations why you didn't use a package
approach to deploy Bpel processes. I find it much more easier to
create one archive with all the files and send it to the engine.
i could do this and what is actually done is very close to that -
deployment of workflow template (and creation of workflow instance) is
set of HTTP POST operations with (mostly) XML documents (using ATOM
publishing protocol) - nothing (except for time constraints) prevent
from implementing POSTing .zip file that is then expanded by engine but
doing it current way has a nice advantage that you can make this process
incremental and can change content of one document (HTTP PUT).
if you don't use globus toolkit container, you can send it as
attachement. but perhaps i have seen an old client api.
for simplicity i just use tomcat but any servlet container would do -
gpel has three parts: engine process(es) which is actually running
workflows (doing XML transformations), sender process(es) that sends
(SOAP) messages out, and receiver(s) that gets messages and supports
workflow deployment, monitoring etc (that is tomcat)
Apache now started workflow project with synergy effect:
http://incubator.apache.org/projects/ode.html
i tried to compile it weeks ago (so i could run bpel 2 validator) but
never succeeded (got lost in maven maze of sub projects and dependencies
...) - hopefully it got better.
only looked at it. but maven2 brings great ease of development.
however, they have too much modules... and at the moment they merge
agila engine and ode engine so there may occur some problems. :(
yes - i also await a stable release so i do not have to pull it from svn
and hope i got a working snapshot of code ...
thanks,
alek
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]