[jboss-svn-commits] JBL Code SVN: r18415 - labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 8 08:14:19 EST 2008
Author: kevin.conner at jboss.com
Date: 2008-02-08 08:14:19 -0500 (Fri, 08 Feb 2008)
New Revision: 18415
Modified:
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/AsyncProcessSignal.java
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/CallbackCommand.java
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/CommandExecutor.java
Log:
Pass actor across to async signal: JBESB-1542
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/AsyncProcessSignal.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/AsyncProcessSignal.java 2008-02-08 13:02:50 UTC (rev 18414)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/AsyncProcessSignal.java 2008-02-08 13:14:19 UTC (rev 18415)
@@ -24,6 +24,7 @@
import java.util.Date;
import org.apache.log4j.Logger;
+import org.jbpm.JbpmContext;
import org.jbpm.JbpmException;
import org.jbpm.command.SignalCommand;
import org.jbpm.context.exe.ContextInstance;
@@ -58,13 +59,22 @@
* The base name of the ESB asynchronous signal context variable.
*/
private static final String ESB_ASYNC_SIGNAL_VARIABLE_NAME = "ESB_ASYNC_SIGNAL_VARIABLE_" ;
+ /**
+ * The name of the ESB asynchronous signal transition variable.
+ */
+ private static final String ESB_ASYNC_SIGNAL_TRANSITION_VARIABLE_NAME = ESB_ASYNC_SIGNAL_VARIABLE_NAME + "TRANSITION_" ;
+ /**
+ * The name of the ESB asynchronous signal actor variable.
+ */
+ private static final String ESB_ASYNC_SIGNAL_ACTOR_VARIABLE_NAME = ESB_ASYNC_SIGNAL_VARIABLE_NAME + "ACTOR_" ;
/**
* Create an asynchronous signal job for the specified token and transition.
* @param token The token to signal.
* @param transitionName The transition to signal or null if the default transition is to be used.
+ * @param actor The actor to use.
*/
- static void createSignalJob(final Token token, final String transitionName)
+ static void createSignalJob(final Token token, final String transitionName, final String actor)
{
final boolean isDebugEnabled = logger.isDebugEnabled() ;
final long tokenId = token.getId() ;
@@ -78,15 +88,10 @@
}
token.lock(ESB_ASYNC_SIGNAL_ACTION_NAME);
- final String transitionVariableName = ESB_ASYNC_SIGNAL_VARIABLE_NAME + tokenId ;
- if (transitionName != null)
- {
- contextInstance.setVariable(transitionVariableName, transitionName) ;
- }
- else
- {
- contextInstance.deleteVariable(transitionVariableName) ;
- }
+ final String transitionVariableName = ESB_ASYNC_SIGNAL_TRANSITION_VARIABLE_NAME + tokenId ;
+ setVariable(contextInstance, transitionVariableName, transitionName) ;
+ final String actorVariableName = ESB_ASYNC_SIGNAL_ACTOR_VARIABLE_NAME + tokenId ;
+ setVariable(contextInstance, actorVariableName, actor) ;
final ExecuteActionJob signalJob = new ExecuteActionJob(token) ;
signalJob.setAction(getAsyncSignalAction(token)) ;
signalJob.setDueDate(new Date()) ;
@@ -105,6 +110,24 @@
}
/**
+ * Set the context instance variable.
+ * @param contextInstance The context instance.
+ * @param name The variable name
+ * @param value The variable value
+ */
+ private static void setVariable(final ContextInstance contextInstance, final String name, final String value)
+ {
+ if (value != null)
+ {
+ contextInstance.setVariable(name, value) ;
+ }
+ else
+ {
+ contextInstance.deleteVariable(name) ;
+ }
+ }
+
+ /**
* Locate the asynchronous signal action associated with the process instance.
* @param token The token to signal.
* @return The action used for asynchronous signalling.
@@ -181,9 +204,23 @@
}
final ProcessInstance processInstance = token.getProcessInstance() ;
final ContextInstance contextInstance = processInstance.getContextInstance() ;
- final String transitionName = (String)contextInstance.getVariable(ESB_ASYNC_SIGNAL_VARIABLE_NAME + tokenId) ;
- final SignalCommand signalCommand = new SignalCommand(tokenId, transitionName) ;
- signalCommand.execute(executionContext.getJbpmContext()) ;
+ final String transitionName = (String)contextInstance.getVariable(ESB_ASYNC_SIGNAL_TRANSITION_VARIABLE_NAME + tokenId) ;
+ final String actor = (String)contextInstance.getVariable(ESB_ASYNC_SIGNAL_ACTOR_VARIABLE_NAME + tokenId) ;
+ final JbpmContext jbpmContext = executionContext.getJbpmContext() ;
+ final String origActor = jbpmContext.getActorId() ;
+ try
+ {
+ if (actor != null)
+ {
+ jbpmContext.setActorId(actor) ;
+ }
+ final SignalCommand signalCommand = new SignalCommand(tokenId, transitionName) ;
+ signalCommand.execute(jbpmContext) ;
+ }
+ finally
+ {
+ jbpmContext.setActorId(origActor) ;
+ }
if (isDebugEnabled)
{
logger.debug("Signalled task " + tokenId + " from process instance " +
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/CallbackCommand.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/CallbackCommand.java 2008-02-08 13:02:50 UTC (rev 18414)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/CallbackCommand.java 2008-02-08 13:14:19 UTC (rev 18415)
@@ -125,7 +125,7 @@
contextInstance.addVariables(variables);
}
- AsyncProcessSignal.createSignalJob(token, transitionName) ;
+ AsyncProcessSignal.createSignalJob(token, transitionName, jbpmContext.getActorId()) ;
} catch (CallbackException jbpmCe) {
logger.warn(jbpmCe.getMessage());
}
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/CommandExecutor.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/CommandExecutor.java 2008-02-08 13:02:50 UTC (rev 18414)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/CommandExecutor.java 2008-02-08 13:14:19 UTC (rev 18415)
@@ -277,7 +277,7 @@
if (result instanceof ProcessInstance)
{
final ProcessInstance processInstance = (ProcessInstance)result ;
- AsyncProcessSignal.createSignalJob(processInstance.getRootToken(), transitionName) ;
+ AsyncProcessSignal.createSignalJob(processInstance.getRootToken(), transitionName, getActorId()) ;
}
return result ;
}
More information about the jboss-svn-commits
mailing list