Hehe.. I agree with you.. but we can't just delete it.. that's why splitting them we can have the core and then add more transport to it.
CXF is fine and we are also using that along with the WS-HT spec interface to expose the module and it works fine.. it just add a lot of boilerplate.
I think that we can play a little bit with the core and start providing different interfaces. I really appreciate kris input on this... because I think that he can give us a good vision about what things we should include and what things we can left out.
My personal roadmap will be:
1) get the core and remove all the unneeded transport layers
2) review the APIs, there are a lot of things missing there and we can decouple the APIs better (users, queries, taskLists, etc)
3) forget about the transport and just get a simple jar with all the functionality.
4) get a detailed plan for integrations (transactions, db configurations, etc)
Most of these things are just copying what is there and break backward compatibility, and if we do that we need to be sure that we will have a synchronization point in the future..
Brad, do you want to help us? what's your github account?
Cheers
On Thu, Oct 20, 2011 at 9:47 AM, Marco Rietveld
<mrietvel@redhat.com> wrote:
Mauricio,
I have absolutely no problem with first packaging the human-task
project in a jar, and then
also having it packaged as a web
application/web service -- just like Brad described.
I agree with your point about architecture: if you can offer the
human-task as a jar, that makes it's inclusion into other
systems/applications much easier. And it would be very cool to have
it become a WS-HT library that is widely used.
I'll write you/the list probably next week with a suggestion for how
we could achieve this: otherwise, feel free to submit a "road-map"
yourself!
Lastly, with regards to your pull request/split idea: I don't think
that the human-task needs to be split. I think we just need to
delete the transport part. :) We can then refactor the "jbpm logic"
part so that it has a primary interface that the web service or
other architectures can interface with.
@Brad: thanks for the suggestion about CXF. Those are exactly the
lines I was thinking along.
Thanks,
Marco
10/20/2011 02:21 PM, Mauricio Salatino:
A web application will limit to all the users that
wants to add the logic of the Human Task Component embedded inside
their own application which I think that is a very good use case.
For example, one of the things that I'm pushing forward is the
fact that you can create tasks from rules instead of creating
tasks just from business processes. If you want to do that having
all the logic inside a web application will complicate your
application architecture. I'm not against of having a web
application that wraps the human task component functionality but
we should provide also a simple library that can be embedded in
any environment.
I agree with you on the second question, I mean.. that's why
I was trying to decouple the logic from the transport in that
pull request that breaks apart the current single module into
like 8 sub projects. The other thing that it's important to
mention is that I believe that the human task component should
go outside of the jBPM project to promote the use from different
other projects. I would love to see the human task functionality
included in JBoss AS for example as a service, but not as a web
application :)
Cheers
On Thu, Oct 20, 2011 at 9:16 AM, Marco
Rietveld
<mrietvel@redhat.com>
wrote:
Mauricio,
Why don't you think that the module should be a web
application?
And why do you want to put the code that implements the
server, client and async. nature in the
jBPM
project??
Thanks,
Marco
10/20/2011 02:09 PM, Mauricio Salatino:
Hi marco,
We have implemented a project that basically
provides the bindings for the current module with
the WS Interface proposed by WS-HT standard. Doing
that we have introduced a lot of boilerplate with
the data types proposed in the standard. If you
take a look at the new interface that is called
TaskService you will see that thats the
synchronous interface with the methods that we can
expose with WS or JMS(Commands like in drools),
but I don't believe that the module should be a
Web application. If you talk with kris about this
you will find that I have a couple of pending task
related with hooking up the task service to the
JNDI tree to be able to be used by multiple
applications for example in tomcat or jboss.
I'm open to create a project in my github
account where we can play around and coordinate
that effort, I also have access to a jenkings
server to keep it blue. The main problem with the
module human task module is that is being used and
we cannot break it or change it completely.
I've already added you Marco as a
collaborator..
I think that the main idea will be to build a
proposal to see what we can do and how we can
handle the existing users.
Marco what do you think about that? what are
the main goals that you want to achieve?
If someone else is interested in this idea
please write us back.
Cheers
On Thu, Oct 20, 2011 at
8:58 AM, Marco Rietveld
<mrietvel@redhat.com>
wrote:
Mauricio,
You know the code better than I do, but IMO,
the infrastructure code in that module is
not okay.
> I really like the idea of having this
human task module completely decoupled
from the rest of the project
I am all for this. Would you mind hosting it
on your github, then?
A lot of the
jBPM related code seems
to be okay, it's mostly how the module is
set up that bothers me.
It seems like it would be a better idea to
implement the human-task as a webservice
war. That way, we could get rid of the
server, client and asynchronous code in the
module and concentrate on the
jBPM
stuff. The JAX-WS standard includes
asynchronous webservices, and webservices
can be coupled to JMS implementations as
well.
For more information on JAX WS asynchronous
services, please see the following links:
Thanks,
Marco
10/20/2011 01:27 PM, Mauricio Salatino:
Hi Marco,
My opinion about it is good, I
mean, we need to improve the
transport layer of it, but the rest
of the code is ok. If you take a
look at one of my last pull
requests, it was related with the
fact that we need a synchronous
interface to simplify all the
interactions and to hide all the
boilerplate of async
communications.
Which aims to split the logic
that we currently have inside the
human task module into several
modules with their own dependencies.
That will allow us to do internal
changes, api changes as well as
transport changes in a more
manageable way.
I really like the idea of having
this human task module completely
decoupled from the rest of the
project and I'm willing to help as
much as I can to improve it because
I found that not only jBPM can
leverage the power of it.
Let's keep this discussion open
so we can gather more requirements
from the people that is using it.
Cheers
On Thu, Oct
20, 2011 at 7:19 AM, Marco
Rietveld
<mrietvel@redhat.com>
wrote:
Hi guys,
Having looked through the
architecture of the Human-Task
module in the last month or
so, I've become fairly
pessimistic about it.
The biggest problem I'm seeing
is that the "wheel is
reinvented" a couple times --
and the "reinvented wheels"
that are present in the
Human-Task service will be a
pain to maintain/troubleshoot.
The "reinvented wheels" are
things like the following:
- The server logic
- BaseJMSTaskServer,
TaskServerHandler, etc.
- The client logic
- TaskClientHandler, the
ResponseHandler and all
it's children classes)
- The
asynchronous/concurrency
logic
- AbstractBlockingResponseHandler{.waitTillDone(long)
} and every class that
uses that method (and
every class that uses
the class that uses that
method.. etc.)
I think my frustration with
this can best be expressed by
the fact that jBPM is a
process engine project -- it's
not a server project, it's not
a (service) client project,
and it certainly isn't a
project that supports
asynchronous communication.
And yet, we're implementing
all 3 in the module. :/
Lastly, the human-task module
code is the reason that the
jbpm builds (on
hudson.jboss.org)
have been failing for the last
month or so. And the tests are
not
failing because the
tests
are wrong: the tests are
failing because there's a race
condition in the code, and it
occurs when you run the
human-task code on a 1.
heavily loaded server that's
experiencing 2. lots of
network traffic. Which is what
the
hudson.jboss.org is.
I guess I'm wondering what
other people's opinions about
this are!
Thanks,
Marco
--
jBPM/Drools developer
Utrecht, the Netherlands
--
- CTO @
http://www.plugtree.com - MyJourney @
http://salaboy.wordpress.com