Action @BeginTask fails after redirect.execute() from JBPM event
aconn7 Mar 20, 2009 9:38 PMI am getting this error:
Caused by: java.lang.IllegalStateException: task/process id may not be null at org.jboss.seam.bpm.BusinessProcessInterceptor.getProcessOrTaskId(BusinessProcessInterceptor.java:159)
When I post to an @BeginTask annotated action:
@BeginTask @EndTask
public String completeReject(){
return "success";
}
via:
<h:commandButton action="#{rfcJbpmTask.completeReject}" value="COMPLETE REJECT" >
<f:param name="taskId" value="#{taskInstance.id}" />
</h:commandButton>
The page is initially rendered via redirect after a task has been successfully completed and the graph token traverses to the next task. The node-enter event fires this:
public void doRedirectIfSameActor(String page){
// Conditional redirect if current actor is who it being assigned. This is triggered on task-assign
String taskActorId = taskInstance.getActorId();
if (taskActorId.equalsIgnoreCase(actor.getId())){
redirect.setViewId(page);
redirect.setParameter("taskId",taskInstance.getId());
redirect.setParameter("id", taskInstance.getVariable("documentId"));
redirect.execute();
}
}
The BusinessProcessInterceptor is firing this error:
private Long getProcessOrTaskId(String paramName, String el)
{
Object id;
if ( Strings.isEmpty(paramName) )
{
id = Expressions.instance().createValueExpression(el).getValue();
}
else
{
/////// FALLS INTO THIS CASE HERE: values has only null values ////////////////
String[] values = Parameters.instance().getRequestParameters().get(paramName);
id = values!=null && values.length==1 ? values[0] : null;*
}
if (id==null)
{
throw new IllegalStateException("task/process id may not be null");
}
else if (id instanceof Long)
{
return (Long) id;
}
else if (id instanceof String)
{
return new Long( (String) id );
}
else
{
throw new IllegalArgumentException("task/process id must be a string or long");
}
}
}
Can any explain what is happening? It appears to me that the initial rendering of my form is not working property in that the h:commandButton parameters hare not included. But this is a guess.
----------------------------------------------------------------
WHAT I AM TRYING TO ACCOMPLISH
I would like to be able to associate a form with a JPDL task node so that when the user completes 1 task, the next task node's events handler can auto-render the next applicable form.
I like the idea of associating the form with the jpdl <node>. This way, the navigation is bound to the graph and is automatically updated when the graph is updated. If I defined my navigation elsewhere, I have 2 things I need to keep in sync. PageFlow definitions do not apply here because I am talking about a page flow that spans multiple tasks.
I have seen this technique (navigating via the node-enter event) used by Exadel in their E7 product so I am guessing it can be done.
Help appeciated!
Thanks