[Design of JBoss jBPM] - Re: how crucial are exception handlers ?
by tom.baeyens@jboss.com
"estaub" wrote : I meant that it should be easy for someone to understand where the transaction edges are, without digging into the implementation of each delegation class. So part of this is a designer UI issue, but the engine has to behave in a way that the designer UI can predict. Someone modifying the process shouldn't need to exhaustively study the behavior of every component already in the process in order to understand where it will rollback to if an error occurs. [On the other hand, it's very reasonable to expect someone adding a node to understand its transaction semantics.]
|
I don't see a good way on how transactions could be visualized in the graphical process designer.
The default behaviour of jBPM is simple. As long as the process itself is executing, this is done synchrnously (in the same thread) and hence in the same transaction. This is good in case the processing inbetween the wait states is minimal. For most workflows that include human tasks and other wait states, it usually is a perfect default.
For some kind of batch processes, people will probably want the opposite default. Namely that the transaction is committed after each activity and automatically the next activity should start in a new transaction. I'm thinking of supporting this in jPDL 4 by allowing the user to specify/overwrite the default async continuation behaviour on the process level.
"estaub" wrote : is it valid to have an Activity that is not an ExternalActivity, yet waits for an external event? I hope not
|
You are correct. It is not. Wait states *have* to implement external activity.
If an activity can ever get into a wait state, then an external activity has to be implemented.
the naming comes from the fact that the driver for propagating the execution is external to the process during a wait state.
Let me know if you think there is something left which is not rigorous.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4135686#4135686
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4135686
18 years
[Design of POJO Server] - Re: Generalizing dependency injection
by scott.stark@jboss.org
"wolfc" wrote : Business interfaces can be implemented by multiple beans, so there must be a clarifier in between.
| + "ejb/" + vfsPath + local-interface name + "/" + ejbName should work.
|
| If we then get a non-deterministic injection we can throw an exception.
| Why not reverse it a bit:
| + "ejb/" + local-interface name + vfsPath + "/" + ejbName
| then traversal is a bit easier in case multiple jars within one ear contain the same interface.
Working through the resolution implementation more, we want a simple lookup to resolve a reference, so the ejbName of the providing cannot be part of at least one form of the key. That is an unknown element from the point of view of the referencer. We need multiple keys for each provider, some of which may be non-unique.
| @EJB(beanInterface=X.class)
|
translates to a lookup of the provider "ejb/X". If we have multiple providers of the X interface, only the first to be processed would be the provider? If we want to fail an attempt at injection of a non-unique provider, we would have to track the duplicate providers to thrown an exception with the duplicates.
| @EJB(beanInterface=X.class, name="XBean")
|
translates to a lookup of "ejb/X/XBean". The ejb-name is only unique within an ejb-jar, so here again we can have duplicates sources matching this key.
| @EJB(beanInterface=X.class, name="XBean#some.jar")
|
translates to a lookup of "ejb/X/some.jar/XBean". This is the only guaranteed unique key within a deployment.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4135656#4135656
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4135656
18 years