All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.activiti.engine.RuntimeService Maven / Gradle / Ivy

The newest version!
/* Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.activiti.engine;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.activiti.engine.delegate.VariableScope;
import org.activiti.engine.delegate.event.ActivitiEvent;
import org.activiti.engine.delegate.event.ActivitiEventDispatcher;
import org.activiti.engine.delegate.event.ActivitiEventListener;
import org.activiti.engine.delegate.event.ActivitiEventType;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ExecutionQuery;
import org.activiti.engine.runtime.NativeExecutionQuery;
import org.activiti.engine.runtime.NativeProcessInstanceQuery;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.runtime.ProcessInstanceQuery;
import org.activiti.engine.runtime.ProcessInstanceBuilder;
import org.activiti.engine.task.Event;
import org.activiti.engine.task.IdentityLink;
import org.activiti.engine.task.IdentityLinkType;

/**
 * 
 * @author Tom Baeyens
 * @author Joram Barrez
 * @author Daniel Meyer
 */
public interface RuntimeService {

  /**
   * Starts a new process instance in the latest version of the process
   * definition with the given key.
   * 
   * @param processDefinitionKey
   *          key of process definition, cannot be null.
   * @throws ActivitiObjectNotFoundException
   *           when no process definition is deployed with the given key.
   */
  ProcessInstance startProcessInstanceByKey(String processDefinitionKey);

  /**
   * Starts a new process instance in the latest version of the process
   * definition with the given key.
   * 
   * A business key can be provided to associate the process instance with a
   * certain identifier that has a clear business meaning. For example in an
   * order process, the business key could be an order id. This business key can
   * then be used to easily look up that process instance , see
   * {@link ProcessInstanceQuery#processInstanceBusinessKey(String)}. Providing
   * such a business key is definitely a best practice.
   * 
   * @param processDefinitionKey
   *          key of process definition, cannot be null.
   * @param businessKey
   *          a key that uniquely identifies the process instance in the context
   *          or the given process definition.
   * @throws ActivitiObjectNotFoundException
   *           when no process definition is deployed with the given key.
   */
  ProcessInstance startProcessInstanceByKey(String processDefinitionKey, String businessKey);

  /**
   * Starts a new process instance in the latest version of the process
   * definition with the given key
   * 
   * @param processDefinitionKey
   *          key of process definition, cannot be null.
   * @param variables
   *          the variables to pass, can be null.
   * @throws ActivitiObjectNotFoundException
   *           when no process definition is deployed with the given key.
   */
  ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map variables);
  
  /**
   * Starts a new process instance in the latest version of the process
   * definition with the given key.
   * 
   * A business key can be provided to associate the process instance with a
   * certain identifier that has a clear business meaning. For example in an
   * order process, the business key could be an order id. This business key can
   * then be used to easily look up that process instance , see
   * {@link ProcessInstanceQuery#processInstanceBusinessKey(String)}. Providing
   * such a business key is definitely a best practice.
   * 
   * The combination of processdefinitionKey-businessKey must be unique.
   * 
   * @param processDefinitionKey
   *          key of process definition, cannot be null.
   * @param variables
   *          the variables to pass, can be null.
   * @param businessKey
   *          a key that uniquely identifies the process instance in the context
   *          or the given process definition.
   * @throws ActivitiObjectNotFoundException
   *           when no process definition is deployed with the given key.
   */
  ProcessInstance startProcessInstanceByKey(String processDefinitionKey, String businessKey, Map variables);
  
  /**
   * Similar to {@link #startProcessInstanceByKey(String)}, but using a specific tenant identifier.
   */
  ProcessInstance startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String tenantId);

  /**
   * Similar to {@link #startProcessInstanceByKey(String, String)}, but using a specific tenant identifier.
   */
  ProcessInstance startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String businessKey, String tenantId);

  /**
   * Similar to {@link #startProcessInstanceByKey(String, Map)}, but using a specific tenant identifier.
   */
  ProcessInstance startProcessInstanceByKeyAndTenantId(String processDefinitionKey, Map variables, String tenantId);
  
  /**
   * Similar to {@link #startProcessInstanceByKey(String, String, Map)}, but using a specific tenant identifier. 
   */
  ProcessInstance startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String businessKey, Map variables, String tenantId);

  /**
   * Starts a new process instance in the exactly specified version of the
   * process definition with the given id.
   * 
   * @param processDefinitionId
   *          the id of the process definition, cannot be null.
   * @throws ActivitiObjectNotFoundException
   *           when no process definition is deployed with the given key.
   */
  ProcessInstance startProcessInstanceById(String processDefinitionId);

  /**
   * Starts a new process instance in the exactly specified version of the
   * process definition with the given id.
   * 
   * A business key can be provided to associate the process instance with a
   * certain identifier that has a clear business meaning. For example in an
   * order process, the business key could be an order id. This business key can
   * then be used to easily look up that process instance , see
   * {@link ProcessInstanceQuery#processInstanceBusinessKey(String)}. Providing
   * such a business key is definitely a best practice.
   * 
   * @param processDefinitionId
   *          the id of the process definition, cannot be null.
   * @param businessKey
   *          a key that uniquely identifies the process instance in the context
   *          or the given process definition.
   * @throws ActivitiObjectNotFoundException
   *           when no process definition is deployed with the given key.
   */
  ProcessInstance startProcessInstanceById(String processDefinitionId, String businessKey);

  /**
   * Starts a new process instance in the exactly specified version of the
   * process definition with the given id.
   * 
   * @param processDefinitionId
   *          the id of the process definition, cannot be null.
   * @param variables
   *          variables to be passed, can be null
   * @throws ActivitiObjectNotFoundException
   *           when no process definition is deployed with the given key.
   */
  ProcessInstance startProcessInstanceById(String processDefinitionId, Map variables);

  /**
   * Starts a new process instance in the exactly specified version of the
   * process definition with the given id.
   * 
   * A business key can be provided to associate the process instance with a
   * certain identifier that has a clear business meaning. For example in an
   * order process, the business key could be an order id. This business key can
   * then be used to easily look up that process instance , see
   * {@link ProcessInstanceQuery#processInstanceBusinessKey(String)}. Providing
   * such a business key is definitely a best practice.
   * 
   * @param processDefinitionId
   *          the id of the process definition, cannot be null.
   * @param variables
   *          variables to be passed, can be null
   * @throws ActivitiObjectNotFoundException
   *           when no process definition is deployed with the given key.
   */
  ProcessInstance startProcessInstanceById(String processDefinitionId, String businessKey, Map variables);

  /**
   * 

* Signals the process engine that a message is received and starts a new * {@link ProcessInstance}. *

* *

* Calling this method can have two different outcomes: *

    *
  • If the message name is associated with a message start event, a new * process instance is started.
  • *
  • If no subscription to a message with the given name exists, * {@link ActivitiException} is thrown
  • *
*

* * @param messageName * the 'name' of the message as specified as an attribute on the * bpmn20 {@code } element. * * @return the {@link ProcessInstance} object representing the started process * instance * * @throws ActivitiExeception * if no subscription to a message with the given name exists * * @since 5.9 */ ProcessInstance startProcessInstanceByMessage(String messageName); /** * Similar to {@link RuntimeService#startProcessInstanceByMessage(String)}, but with tenant context. */ ProcessInstance startProcessInstanceByMessageAndTenantId(String messageName, String tenantId); /** *

* Signals the process engine that a message is received and starts a new * {@link ProcessInstance}. *

* * See {@link #startProcessInstanceByMessage(String, Map)}. This method allows * specifying a business key. * * @param messageName * the 'name' of the message as specified as an attribute on the * bpmn20 {@code } element. * @param businessKey * the business key which is added to the started process instance * * @throws ActivitiExeception * if no subscription to a message with the given name exists * * @since 5.10 */ ProcessInstance startProcessInstanceByMessage(String messageName, String businessKey); /** * Similar to {@link RuntimeService#startProcessInstanceByMessage(String, String)}, but with tenant context. */ ProcessInstance startProcessInstanceByMessageAndTenantId(String messageName, String businessKey, String tenantId); /** *

* Signals the process engine that a message is received and starts a new * {@link ProcessInstance}. *

* * See {@link #startProcessInstanceByMessage(String)}. In addition, this * method allows specifying a the payload of the message as a map of process * variables. * * @param messageName * the 'name' of the message as specified as an attribute on the * bpmn20 {@code } element. * @param processVariables * the 'payload' of the message. The variables are added as processes * variables to the started process instance. * @return the {@link ProcessInstance} object representing the started process * instance * * @throws ActivitiExeception * if no subscription to a message with the given name exists * * @since 5.9 */ ProcessInstance startProcessInstanceByMessage(String messageName, Map processVariables); /** * Similar to {@link RuntimeService#startProcessInstanceByMessage(String, Map)}, but with tenant context. */ ProcessInstance startProcessInstanceByMessageAndTenantId(String messageName, Map processVariables, String tenantId); /** *

* Signals the process engine that a message is received and starts a new * {@link ProcessInstance}. *

* * See {@link #startProcessInstanceByMessage(String, Map)}. In addition, this * method allows specifying a business key. * * @param messageName * the 'name' of the message as specified as an attribute on the * bpmn20 {@code } element. * @param businessKey * the business key which is added to the started process instance * @param processVariables * the 'payload' of the message. The variables are added as processes * variables to the started process instance. * @return the {@link ProcessInstance} object representing the started process * instance * * @throws ActivitiExeception * if no subscription to a message with the given name exists * * @since 5.9 */ ProcessInstance startProcessInstanceByMessage(String messageName, String businessKey, Map processVariables); /** * Similar to {@link RuntimeService#startProcessInstanceByMessage(String, String, Map)}, but with tenant context. */ ProcessInstance startProcessInstanceByMessageAndTenantId(String messageName, String businessKey, Map processVariables, String tenantId); /** * Delete an existing runtime process instance. * * @param processInstanceId * id of process instance to delete, cannot be null. * @param deleteReason * reason for deleting, can be null. * @throws ActivitiObjectNotFoundException * when no process instance is found with the given id. */ void deleteProcessInstance(String processInstanceId, String deleteReason); /** * Finds the activity ids for all executions that are waiting in activities. * This is a list because a single activity can be active multiple times. * * @param executionId * id of the execution, cannot be null. * @throws ActivitiObjectNotFoundException * when no execution exists with the given executionId. */ List getActiveActivityIds(String executionId); /** * Sends an external trigger to an activity instance that is waiting inside * the given execution. * * @param executionId * id of execution to signal, cannot be null. * @throws ActivitiObjectNotFoundException * when no execution is found for the given executionId. */ void signal(String executionId); /** * Sends an external trigger to an activity instance that is waiting inside * the given execution. * * @param executionId * id of execution to signal, cannot be null. * @param processVariables * a map of process variables * @throws ActivitiObjectNotFoundException * when no execution is found for the given executionId. */ void signal(String executionId, Map processVariables); /** * Updates the business key for the provided process instance * * @param processInstanceId * id of the process instance to set the business key, cannot be null * @param businessKey * new businessKey value */ void updateBusinessKey(String processInstanceId, String businessKey); // Identity Links // /////////////////////////////////////////////////////////////// /** * Involves a user with a process instance. The type of identity link is * defined by the given identityLinkType. * * @param processInstanceId * id of the process instance, cannot be null. * @param userId * id of the user involve, cannot be null. * @param identityLinkType * type of identityLink, cannot be null (@see * {@link IdentityLinkType}). * @throws ActivitiObjectNotFoundException * when the process instance doesn't exist. */ void addUserIdentityLink(String processInstanceId, String userId, String identityLinkType); /** * Involves a group with a process instance. The type of identityLink is defined by the * given identityLink. * @param processInstanceId id of the process instance, cannot be null. * @param groupId id of the group to involve, cannot be null. * @param identityLinkType type of identity, cannot be null (@see {@link IdentityLinkType}). * @throws ActivitiObjectNotFoundException when the process instance or group doesn't exist. */ void addGroupIdentityLink(String processInstanceId, String groupId, String identityLinkType); /** * Convenience shorthand for {@link #addUserIdentityLink(String, String, String)}; with type {@link IdentityLinkType#CANDIDATE} * @param processInstanceId id of the process instance, cannot be null. * @param userId id of the user to use as candidate, cannot be null. * @throws ActivitiObjectNotFoundException when the task or user doesn't exist. */ void addParticipantUser(String processInstanceId, String userId); /** * Convenience shorthand for {@link #addGroupIdentityLink(String, String, String)}; with type {@link IdentityLinkType#CANDIDATE} * @param processInstanceId id of the process instance, cannot be null. * @param groupId id of the group to use as candidate, cannot be null. * @throws ActivitiObjectNotFoundException when the task or group doesn't exist. */ void addParticipantGroup(String processInstanceId, String groupId); /** * Convenience shorthand for {@link #deleteUserIdentityLink(String, String, String)}; with type {@link IdentityLinkType#CANDIDATE} * @param processInstanceId id of the process instance, cannot be null. * @param userId id of the user to use as candidate, cannot be null. * @throws ActivitiObjectNotFoundException when the task or user doesn't exist. */ void deleteParticipantUser(String processInstanceId, String userId); /** * Convenience shorthand for {@link #deleteGroupIdentityLink(String, String, String)}; with type {@link IdentityLinkType#CANDIDATE} * @param processInstanceId id of the process instance, cannot be null. * @param groupId id of the group to use as candidate, cannot be null. * @throws ActivitiObjectNotFoundException when the task or group doesn't exist. */ void deleteParticipantGroup(String processInstanceId, String groupId); /** * Removes the association between a user and a process instance for the given identityLinkType. * @param processInstanceId id of the process instance, cannot be null. * @param userId id of the user involve, cannot be null. * @param identityLinkType type of identityLink, cannot be null (@see {@link IdentityLinkType}). * @throws ActivitiObjectNotFoundException when the task or user doesn't exist. */ void deleteUserIdentityLink(String processInstanceId, String userId, String identityLinkType); /** * Removes the association between a group and a process instance for the given identityLinkType. * @param processInstanceId id of the process instance, cannot be null. * @param groupId id of the group to involve, cannot be null. * @param identityLinkType type of identity, cannot be null (@see {@link IdentityLinkType}). * @throws ActivitiObjectNotFoundException when the task or group doesn't exist. */ void deleteGroupIdentityLink(String processInstanceId, String groupId, String identityLinkType); /** * Retrieves the {@link IdentityLink}s associated with the given process * instance. Such an {@link IdentityLink} informs how a certain user is * involved with a process instance. */ List getIdentityLinksForProcessInstance(String instanceId); // Variables // //////////////////////////////////////////////////////////////////// /** * All variables visible from the given execution scope (including parent * scopes). * * @param executionId * id of execution, cannot be null. * @return the variables or an empty map if no such variables are found. * @throws ActivitiObjectNotFoundException * when no execution is found for the given executionId. */ Map getVariables(String executionId); /** * All variable values that are defined in the execution scope, without taking * outer scopes into account. If you have many task local variables and you * only need a few, consider using * {@link #getVariablesLocal(String, Collection)} for better performance. * * @param executionId * id of execution, cannot be null. * @return the variables or an empty map if no such variables are found. * @throws ActivitiObjectNotFoundException * when no execution is found for the given executionId. */ Map getVariablesLocal(String executionId); /** * The variable values for all given variableNames, takes all variables into * account which are visible from the given execution scope (including parent * scopes). * * @param executionId * id of execution, cannot be null. * @param variableNames * the collection of variable names that should be retrieved. * @return the variables or an empty map if no such variables are found. * @throws ActivitiObjectNotFoundException * when no execution is found for the given executionId. */ Map getVariables(String executionId, Collection variableNames); /** * The variable values for the given variableNames only taking the given * execution scope into account, not looking in outer scopes. * * @param executionId * id of execution, cannot be null. * @param variableNames * the collection of variable names that should be retrieved. * @return the variables or an empty map if no such variables are found. * @throws ActivitiObjectNotFoundException * when no execution is found for the given executionId. */ Map getVariablesLocal(String executionId, Collection variableNames); /** * The variable value. Searching for the variable is done in all scopes that * are visible to the given execution (including parent scopes). Returns null * when no variable value is found with the given name or when the value is * set to null. * * @param executionId * id of execution, cannot be null. * @param variableName * name of variable, cannot be null. * @return the variable value or null if the variable is undefined or the * value of the variable is null. * @throws ActivitiObjectNotFoundException * when no execution is found for the given executionId. */ Object getVariable(String executionId, String variableName); /** * The variable value. Searching for the variable is done in all scopes that * are visible to the given execution (including parent scopes). Returns null * when no variable value is found with the given name or when the value is * set to null. Throws ClassCastException when cannot cast variable to * given class * * @param executionId * id of execution, cannot be null. * @param variableName * name of variable, cannot be null. * @param variableClass * name of variable, cannot be null. * @return the variable value or null if the variable is undefined or the * value of the variable is null. * @throws ActivitiObjectNotFoundException * when no execution is found for the given executionId. */ T getVariable(String executionId, String variableName, Class variableClass); /** * Check whether or not this execution has variable set with the given name, * Searching for the variable is done in all scopes that are visible to the * given execution (including parent scopes). */ boolean hasVariable(String executionId, String variableName); /** * The variable value for an execution. Returns the value when the variable is * set for the execution (and not searching parent scopes). Returns null when * no variable value is found with the given name or when the value is set to * null. */ Object getVariableLocal(String executionId, String variableName); /** * The variable value for an execution. Returns the value casted to given class * when the variable is set for the execution (and not searching parent scopes). * Returns null when no variable value is found with the given name or when the * value is set to null. */ T getVariableLocal(String executionId, String variableName, Class variableClass); /** * Check whether or not this execution has a local variable set with the given * name. */ boolean hasVariableLocal(String executionId, String variableName); /** * Update or create a variable for an execution. * *

* The variable is set according to the algorithm as documented for * {@link VariableScope#setVariable(String, Object)}. * * @see VariableScope#setVariable(String, Object) * {@link VariableScope#setVariable(String, Object)} * * @param executionId * id of execution to set variable in, cannot be null. * @param variableName * name of variable to set, cannot be null. * @param value * value to set. When null is passed, the variable is not removed, * only it's value will be set to null. * @throws ActivitiObjectNotFoundException * when no execution is found for the given executionId. */ void setVariable(String executionId, String variableName, Object value); /** * Update or create a variable for an execution (not considering parent * scopes). If the variable is not already existing, it will be created in the * given execution. * * @param executionId * id of execution to set variable in, cannot be null. * @param variableName * name of variable to set, cannot be null. * @param value * value to set. When null is passed, the variable is not removed, * only it's value will be set to null. * @throws ActivitiObjectNotFoundException * when no execution is found for the given executionId. */ void setVariableLocal(String executionId, String variableName, Object value); /** * Update or create given variables for an execution (including parent * scopes). *

* Variables are set according to the algorithm as documented for * {@link VariableScope#setVariables(Map)}, applied separately to each * variable. * * @see VariableScope#setVariables(Map) * {@link VariableScope#setVariables(Map)} * * @param executionId * id of the execution, cannot be null. * @param variables * map containing name (key) and value of variables, can be null. * @throws ActivitiObjectNotFoundException * when no execution is found for the given executionId. */ void setVariables(String executionId, Map variables); /** * Update or create given variables for an execution (not considering parent * scopes). If the variables are not already existing, it will be created in * the given execution. * * @param executionId * id of the execution, cannot be null. * @param variables * map containing name (key) and value of variables, can be null. * @throws ActivitiObjectNotFoundException * when no execution is found for the given executionId. */ void setVariablesLocal(String executionId, Map variables); /** * Removes a variable for an execution. * * @param executionId * id of execution to remove variable in. * @param variableName * name of variable to remove. */ void removeVariable(String executionId, String variableName); /** * Removes a variable for an execution (not considering parent scopes). * * @param executionId * id of execution to remove variable in. * @param variableName * name of variable to remove. */ void removeVariableLocal(String executionId, String variableName); /** * Removes variables for an execution. * * @param executionId * id of execution to remove variable in. * @param variableNames * collection containing name of variables to remove. */ void removeVariables(String executionId, Collection variableNames); /** * Remove variables for an execution (not considering parent scopes). * * @param executionId * id of execution to remove variable in. * @param variableNames * collection containing name of variables to remove. */ void removeVariablesLocal(String executionId, Collection variableNames); // Queries //////////////////////////////////////////////////////// /** * Creates a new {@link ExecutionQuery} instance, that can be used to query * the executions and process instances. */ ExecutionQuery createExecutionQuery(); /** * creates a new {@link NativeExecutionQuery} to query {@link Execution}s by * SQL directly */ NativeExecutionQuery createNativeExecutionQuery(); /** * Creates a new {@link ProcessInstanceQuery} instance, that can be used to * query process instances. */ ProcessInstanceQuery createProcessInstanceQuery(); /** * creates a new {@link NativeProcessInstanceQuery} to query * {@link ProcessInstance}s by SQL directly */ NativeProcessInstanceQuery createNativeProcessInstanceQuery(); // Process instance state ////////////////////////////////////////// /** * Suspends the process instance with the given id. * * If a process instance is in state suspended, activiti will not execute jobs * (timers, messages) associated with this instance. * * If you have a process instance hierarchy, suspending one process instance * form the hierarchy will not suspend other process instances form that * hierarchy. * * @throws ActivitiObjectNotFoundException * if no such processInstance can be found. * @throws ActivitiException * the process instance is already in state suspended. */ void suspendProcessInstanceById(String processInstanceId); /** * Activates the process instance with the given id. * * If you have a process instance hierarchy, suspending one process instance * form the hierarchy will not suspend other process instances form that * hierarchy. * * @throws ActivitiObjectNotFoundException * if no such processInstance can be found. * @throws ActivitiException * if the process instance is already in state active. */ void activateProcessInstanceById(String processInstanceId); // Events // //////////////////////////////////////////////////////////////////////// /** * Notifies the process engine that a signal event of name 'signalName' has * been received. This method delivers the signal to all executions waiting on * the signal. *

* * NOTE: The waiting executions are notified synchronously. * * @param signalName * the name of the signal event */ void signalEventReceived(String signalName); /** * Similar to {@link #signalEventReceived(String)}, but within the context of one tenant. */ void signalEventReceivedWithTenantId(String signalName, String tenantId); /** * Notifies the process engine that a signal event of name 'signalName' has * been received. This method delivers the signal to all executions waiting on * the signal. *

* * @param signalName * the name of the signal event */ void signalEventReceivedAsync(String signalName); /** * Similar to {@link #signalEventReceivedAsync(String)}, but within the context of one tenant. */ void signalEventReceivedAsyncWithTenantId(String signalName, String tenantId); /** * Notifies the process engine that a signal event of name 'signalName' has * been received. This method delivers the signal to all executions waiting on * the signal. *

* * NOTE: The waiting executions are notified synchronously. * * @param signalName * the name of the signal event * @param processVariables * a map of variables added to the execution(s) */ void signalEventReceived(String signalName, Map processVariables); /** * Similar to {@link #signalEventReceived(String, Map)}, but within the context of one tenant. */ void signalEventReceivedWithTenantId(String signalName, Map processVariables, String tenantId); /** * Notifies the process engine that a signal event of name 'signalName' has * been received. This method delivers the signal to a single execution, being * the execution referenced by 'executionId'. The waiting execution is * notified synchronously. * * @param signalName * the name of the signal event * @param executionId * the id of the execution to deliver the signal to * @throws ActivitiObjectNotFoundException * if no such execution exists. * @throws ActivitiException * if the execution has not subscribed to the signal. */ void signalEventReceived(String signalName, String executionId); /** * Notifies the process engine that a signal event of name 'signalName' has * been received. This method delivers the signal to a single execution, being * the execution referenced by 'executionId'. The waiting execution is * notified synchronously. * * @param signalName * the name of the signal event * @param executionId * the id of the execution to deliver the signal to * @param processVariables * a map of variables added to the execution(s) * @throws ActivitiObjectNotFoundException * if no such execution exists. * @throws ActivitiException * if the execution has not subscribed to the signal */ void signalEventReceived(String signalName, String executionId, Map processVariables); /** * Notifies the process engine that a signal event of name 'signalName' has * been received. This method delivers the signal to a single execution, being * the execution referenced by 'executionId'. The waiting execution is * notified asynchronously. * * @param signalName * the name of the signal event * @param executionId * the id of the execution to deliver the signal to * @throws ActivitiObjectNotFoundException * if no such execution exists. * @throws ActivitiException * if the execution has not subscribed to the signal. */ void signalEventReceivedAsync(String signalName, String executionId); /** * Notifies the process engine that a message event with name 'messageName' * has been received and has been correlated to an execution with id * 'executionId'. * * The waiting execution is notified synchronously. * * @param messageName * the name of the message event * @param executionId * the id of the execution to deliver the message to * @throws ActivitiObjectNotFoundException * if no such execution exists. * @throws ActivitiException * if the execution has not subscribed to the signal */ void messageEventReceived(String messageName, String executionId); /** * Notifies the process engine that a message event with the name * 'messageName' has been received and has been correlated to an execution * with id 'executionId'. * * The waiting execution is notified synchronously. * *

* Variables are set for the scope of the execution of the message event * subscribed to the message name. For example: *

*

  • The scope for an intermediate message event in the main process is that * of the process instance
  • *
  • The scope for an intermediate message event in a subprocess is that of * the subprocess
  • *
  • The scope for a boundary message event is that of the execution for the * Activity the event is attached to
  • *

    * Variables are set according to the algorithm as documented for * {@link VariableScope#setVariables(Map)}, applied separately to each * variable. * * @see VariableScope#setVariables(Map) * {@link VariableScope#setVariables(Map)} * * @param messageName * the name of the message event * @param executionId * the id of the execution to deliver the message to * @param processVariables * a map of variables added to the execution * @throws ActivitiObjectNotFoundException * if no such execution exists. * @throws ActivitiException * if the execution has not subscribed to the signal */ void messageEventReceived(String messageName, String executionId, Map processVariables); /** * Notifies the process engine that a message event with the name * 'messageName' has been received and has been correlated to an execution * with id 'executionId'. * * The waiting execution is notified asynchronously. * * @param messageName * the name of the message event * @param executionId * the id of the execution to deliver the message to * @throws ActivitiObjectNotFoundException * if no such execution exists. * @throws ActivitiException * if the execution has not subscribed to the signal */ void messageEventReceivedAsync(String messageName, String executionId); /** * Adds an event-listener which will be notified of ALL events by the * dispatcher. * * @param listenerToAdd * the listener to add */ void addEventListener(ActivitiEventListener listenerToAdd); /** * Adds an event-listener which will only be notified when an event occurs, * which type is in the given types. * * @param listenerToAdd * the listener to add * @param types * types of events the listener should be notified for */ void addEventListener(ActivitiEventListener listenerToAdd, ActivitiEventType... types); /** * Removes the given listener from this dispatcher. The listener will no * longer be notified, regardless of the type(s) it was registered for in the * first place. * * @param listenerToRemove * listener to remove */ void removeEventListener(ActivitiEventListener listenerToRemove); /** * Dispatches the given event to any listeners that are registered. * * @param event * event to dispatch. * * @throws ActivitiException * if an exception occurs when dispatching the event or when the * {@link ActivitiEventDispatcher} is disabled. * @throws ActivitiIllegalArgumentException * when the given event is not suitable for dispatching. */ void dispatchEvent(ActivitiEvent event); /** * Sets the name for the process instance with the given id. * @param processInstanceId id of the process instance to update * @param name new name for the process instance * @throws ActivitiObjectNotFoundException * when the given process instance does not exist. */ void setProcessInstanceName(String processInstanceId, String name); /** The all events related to the given Process Instance. */ List getProcessInstanceEvents(String processInstanceId); /**Create a ProcessInstanceBuilder*/ ProcessInstanceBuilder createProcessInstanceBuilder(); }





    © 2015 - 2024 Weber Informatics LLC | Privacy Policy