protected boolean isWorkAsync(ActivityInstanceImpl activityInstance) { // if this workflow instance is already running in an async thread, // the new work should be done sync in this thread. if (Boolean.TRUE.equals(isAsync)) { return false; } if (!ActivityInstanceImpl.START_WORKSTATES.contains(activityInstance.workState)) { return false; } return activityInstance.getActivity().activityType.isAsync(activityInstance); }
&& siblingActivityInstance.getActivity()==activityInstance.getActivity() && siblingActivityInstance.isJoining() ) { otherJoiningActivityInstances.add(siblingActivityInstance);
public WorkflowInstance send(Message message, WorkflowInstanceImpl workflowInstance) { Map<String, Object> transientData = message.getTransientData(); if (transientData !=null) { for (String key: transientData.keySet()) { workflowInstance.setTransientProperty(key, transientData.get(key)); } } String activityInstanceId = message.getActivityInstanceId(); ActivityInstanceImpl activityInstance = workflowInstance.findActivityInstance(activityInstanceId); if (activityInstance==null) { workflowInstanceStore.unlockWorkflowInstance(workflowInstance); throw new RuntimeException("Activity instance "+activityInstanceId+" not in workflow instance"); } if (log.isDebugEnabled()) log.debug("Signalling "+activityInstance); ActivityImpl activity = activityInstance.getActivity(); activity.activityType.message(activityInstance, message); return workflowInstance.executeWork(); }
/** * Notifies event listeners tha the workflow instance has finished execution. */ public void workflowInstanceEnded() { workflow.workflowEngine.notifyWorkflowInstanceEnded(workflowInstance); destroyScopeInstance(); if (callingWorkflowInstanceId != null) { WorkflowInstanceImpl callingWorkflowInstance = getLockedWorkflowInstance(callingWorkflowInstanceId); final ActivityInstanceImpl callingActivityInstance = callingWorkflowInstance.findActivityInstance(callingActivityInstanceId); if (log.isDebugEnabled()) log.debug("Notifying calling activity instance " + callingActivityInstance); ActivityImpl activityDefinition = callingActivityInstance.getActivity(); final SubProcessImpl callActivity = (SubProcessImpl) activityDefinition.activityType; callActivity.calledWorkflowInstanceEnded(callingActivityInstance, this); } }
while (hasWork()) { ActivityInstanceImpl activityInstance = getNextWork(); ActivityImpl activity = activityInstance.getActivity(); ActivityType activityType = activity.activityType;