[jbpm-dev] jBPM4 Design Topics
Thomas Diesler
thomas.diesler at jboss.com
Fri Oct 31 09:36:01 EDT 2008
I think you may have misunderstood.
> so i don't see a lot of need for the engine calling the client back.
The engine would call the client on every UserTask. If process execution
is fundamentally decoupled from the client thread (as I claim it should
be) there is no way to return control to the client.
Instead a messaging semantics or a callback semantics would be used.
Tom Baeyens wrote:
> from the top of my head, the only use case where people want to know the
> result of process execution is when subsequent tasks want to be
> presented to the user as a wizard:
>
> http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4185709#4185709
>
> "
> I'm at the stage where we have a working process and a console that
> drives several processes. Again, I want to figure out how to create the
> action or code that would cause the next task queued for the same user
> to be brought up without having to click in the queue. I created a JSF
> tag that was like completeTask except it returns the id of the next task
> IF it is for the same user. I'm trying to figure out how to "redirect"
> so that a new task gets loaded.
> "
>
> so i don't see a lot of need for the engine calling the client back. we
> can discuss further on monday
>
> regards, tom.
>
>
>
>
> Thomas Diesler wrote:
>> Hi Joram,
>>
>> thanks for your feedback.
>>
>> > ie you signal a process to start and then poll the service
>>
>> Not quite. I claim that the engine should call the client when input
>> is needed from a threading model that ius controlled by the engine -
>> no polling.
>>
>> Conceptually, the engine would throw Signals
>>
>> http://www.jboss.org/community/docs/DOC-12885
>>
>> and send Messages
>>
>> http://www.jboss.org/community/docs/DOC-12887
>>
>> On top of the low level messaging API there can be a callback API that
>> hides the internals of
>>
>> * register message listener
>> * copy token data to outgoing message
>> * send outgoing message
>> * receive outgoing message
>> * extract outgoing message data
>> * create incoming message with response data
>> * send incoming message
>> * copy data from incoming message to token
>>
>> A client would simply register a callback handler, consume the token
>> data and provide the response data. The underlying messaging semantics
>> is transparent.
>>
>> -----------------
>>
>> The above is a suggestion how jBPM could be used in embedded mode
>> without borrowing the client thread. With the concept of "client
>> signals the process" it is not clear to me how this would work with an
>> arbitrary composition of long running automated task and user tasks.
>>
>> The API should be as simple as possible, but not simpler. Due to over
>> simplification there are a few limitations that I would like to hear
>> addressed and create awareness of whether this is acceptable or not.
>>
>> Joram Barrez wrote:
>>> Thomas,
>>>
>>> Thanks for putting your ideas clearly in a document. It helps me to
>>> understand some things you've been saying.
>>>
>>> There are points in the document that deserve discussion.However, I
>>> do get the impression that you see the ideal jBPM as a 'standalone
>>> service'. ie you signal a process to start and then poll the service
>>> until you get a response. This is a valid use case, ie the JBoss
>>> server + the enterprise jbpm EJBs come close to this idea (altough
>>> the are some flaws, that is true).
>>>
>>> But I think that you are forgetting that many (or almost every,
>>> altough in my experience) use jBPM in an embedded way. Many use cases
>>> see a process engine call as an integral part of some business logic
>>> unit of work that has to run in the same transaction. For example a
>>> save to the database of a domain model (employee for example) is only
>>> valid when the enlisting process is started correctly.
>>>
>>> This is the great strength of jBPM, compared to other products
>>> (mostly exposing BPM as a service that can be queried through some
>>> (remote) api), that jBPM can easily be embedded in any technology:
>>> I've used jBPM with Spring, with EJBs (MDB, statelss SB), as a
>>> webservice, etc. Many vendors provide monolithic BPM service
>>> products. I think jBPM has become popular with developers because it
>>> is exactly the opposite.
>>>
>>> Please clarify if I'm seeing this all wrong! But the opinion I got
>>> when I read your document was not that of an embeddable BPM engine.
>>>
>>> If I see the level of the dicussion going on nowadays, I'm really
>>> looking forward to next week!
>>>
>>> Regards
>>>
>>> Joram
>>>
>>> On Tue, Oct 28, 2008 at 3:21 PM, Tom Baeyens <tbaeyens at redhat.com
>>> <mailto:tbaeyens at redhat.com>> wrote:
>>>
>>> Thanks !
>>> This preparation will make the discussions a lot more
>>> effective/productive.
>>>
>>> regards, tom.
>>>
>>> ps. for the third time, please don't involve Kris in this before
>>> synchronizing with me. It will be hard enough for our team to
>>> synchonize internally. Kris' opinion differs at even completely
>>> other aspects. And I didn't see yet the necessary flexibility from
>>> him to get him involved. For the time being, I'll deal with that.
>>> And I'll get him involved when there is a chance of unification of
>>> the two efforts.
>>>
>>>
>>>
>>> Thomas Diesler wrote:
>>>
>>> Hi Folks,
>>>
>>> in preparation for the meeting in Antwerp, here a few design
>>> considerations
>>>
>>> http://www.jboss.org/community/docs/DOC-12855
>>>
>>> Thanks for your feedback and look forward to meeting you next
>>> week.
>>>
>>> cheers
>>> -thomas
>>>
>>>
>>> -- regards, tom.
>>>
>>>
>>> _______________________________________________
>>> jbpm-dev mailing list
>>> jbpm-dev at lists.jboss.org <mailto:jbpm-dev at lists.jboss.org>
>>> https://lists.jboss.org/mailman/listinfo/jbpm-dev
>>>
>>>
>>
>
--
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Thomas Diesler
BPM Product Lead
JBoss, a division of Red Hat
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
More information about the jbpm-dev
mailing list