[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