[jboss-user] [jBPM Users] - Re: Catching invalid transition names in jBPM4
bwestrich
do-not-reply at jboss.com
Mon Oct 19 12:19:14 EDT 2009
Interesting to know that signal names have such flexibility. And I can imagine situations where that might be useful.
However, the way I've used jBPM 3.2.3, if I send a process instance a signal, I expect the signal to cause a transition (even if the transition is to the same state). So I add validation code between the client and the executing business process that notifies the client if they pass in a signal which is not a valid transition (and thus will not cause a transition).
I think I just figured out a way of doing such a validation using 4.x: Cast the Execution (interface) to an ExecutionImpl, call getActivity() to get the ActivityImpl, then call findOutgoingTransition(String name). If findOutgoingTransition returns a null, the transition is not valid. The below code shows this approach, as well as a way to list all valid transitions.
public class FirstEnterHandler implements ExternalActivityBehaviour {
| public void execute(ActivityExecution execution) throws Exception {
| String transitionName = "byListener?";
| ExecutionImpl executionImpl = (ExecutionImpl) execution;
| ActivityImpl activity = executionImpl.getActivity();
| TransitionImpl transition = activity.findOutgoingTransition(transitionName);
| if (transition == null) {
| String validTrans = activity.getOutgoingTransitions().toString();
| throw new RuntimeException("invalid transition " + transitionName
| + ", valid transitions are : " + validTrans);
| }
| execution.take(transitionName);
| }
| }
Even if this code works, it seems like a lot of use of internal implementation classes. Is this approach an ok way to validate signal names?
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4261101#4261101
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4261101
More information about the jboss-user
mailing list