i was really convinced of proving that i don't suffer the not invented here (NIH)
syndrome. so i was going to use quartz to fix the asynchronous command and scheduler
problems.
In summary: the quite heavy integration layer that is necessary between quartz and jbpm
(mainly jdbc connection and transaction integration) makes is more difficult to create a
supportable jbpm. On the other hand, looking at quartz made me realize how we can easily
upgrade our current timer/messaging mechanism to make it as robust as quartz.
currently this is where i stand: i have completed the quartz customization classes to get
the jdbc connection and transaction behaviour that i want:
all of what follows is only intended to run on a standard java environment. for
enterprise environment, we're going to build an ejb-timer-service based
implementation.
jBPM's timer requirements are quite basic. jBPM managed the code to be executed. The
thing i need is a few basic operations to insert and cancel timers. On the other hand, i
need a Job execution algorithm.
* for managing jobs and triggers (user operations coming from the process definitions),
the same jdbc connection should be used as for the jbpm process updates.
* for quartz internal transactions, quartz should obtain its own JDBC connections and
manage the transactions on those connections.
There is only one job store that makes the separation between these two types of quartz
transactions: JobStoreCMT. In fact, by reading that job store and related docs, i
discovered that quartz needs two types of transactions, one type of transactions is for
user operations and one type of transactions is for quartz internal stuff.
Next i would have to write a Job that contains a reference to a jbpm action.
It seems to me that i have gone through quite a bit of trouble to remove and work around
the quartz behaviour that i don't need in jBPM. Most of the existing quartz knowledge
cannot be used since we have to go through quite a few hoops to get it working. That
integration will be quite tricky to explain to our users and to support our customers.
Another downside that i see is that quartz uses it's own object to JDBC mapping. They
support quite a few databases, but it reduces the chance of things running smooth out of
the box. Also configuration management becomes a lot more difficult if you have to
maintain the jbpm-hibernate configurations separate from the quartz configurations. Also
the schema is a bit big for what we need.
The question is mainly: is the part of quartz that we use worth while all this trouble. I
have definitely seen a simple solution for the current problems that we currently have
with our initial timer and messaging services. The trick that quartz uses is having
out-of-bound transactions and/or database pessimistic locking.
I have gone as far as that i can see how we can get it to work. This resulted in a lot of
configurations and assumptions on how quartz is used in jBPM. So the bigest resistence i
have to go for quartz is support. If we use quartz, chances are that our users will use
quartz in ways that conflict with the assumptions that we have made now: responding to
those inquiries and bug reports is going to take a lot of time because the debugging will
be mostly in the highly customized jbpm-quartz integration. That is a level of
abstraction extra versus the do-it-yourself-invented-here approach.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3968365#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...