@SuppressWarnings("unchecked") protected Queue<ActivityInstanceImpl> readWork(BasicDBObject dbWorkflowInstance, String fieldName, WorkflowInstanceImpl workflowInstance) { Queue<ActivityInstanceImpl> workQueue = null; List<String> workActivityInstanceIds = (List<String>) dbWorkflowInstance.get(fieldName); if (workActivityInstanceIds!=null) { workQueue = new LinkedList<>(); for (String workActivityInstanceId: workActivityInstanceIds) { ActivityInstanceImpl workActivityInstance = workflowInstance.findActivityInstance(workActivityInstanceId); workQueue.add(workActivityInstance); } } return workQueue; }
protected ScopeInstanceImpl getScopeInstance(WorkflowInstanceImpl workflowInstance, String activityInstanceId) { ScopeInstanceImpl scopeInstance = workflowInstance; if (activityInstanceId!=null) { scopeInstance = workflowInstance.findActivityInstance(activityInstanceId); Exceptions.checkNotNull(scopeInstance); } return scopeInstance; }
@SuppressWarnings("unchecked") protected Queue<ActivityInstanceImpl> readWork(BasicDBObject dbWorkflowInstance, String fieldName, WorkflowInstanceImpl workflowInstance) { Queue<ActivityInstanceImpl> workQueue = null; List<String> workActivityInstanceIds = (List<String>) dbWorkflowInstance.get(fieldName); if (workActivityInstanceIds!=null) { workQueue = new LinkedList<>(); for (String workActivityInstanceId: workActivityInstanceIds) { ActivityInstanceImpl workActivityInstance = workflowInstance.findActivityInstance(workActivityInstanceId); workQueue.add(workActivityInstance); } } return workQueue; }
/** * 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); } }
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(); }
@Override public void execute(JobController jobController) { ActivityInstanceImpl activityInstance = jobController.getWorkflowInstance().findActivityInstance(jobController.getJob().getActivityInstanceId()); if (activityInstance != null) { for (TimerImpl timer : activityInstance.activity.getTimers()) { if (timer.timer instanceof BoundaryEventTimer) { BoundaryEventTimer boundaryEventTimer = (BoundaryEventTimer) timer.timer; for (String transitionId : boundaryEventTimer.boundaryEvent.getToTransitionIds()) { activityInstance.takeTransition( jobController.getWorkflowInstance().getWorkflow().findTransitionByIdLocal(transitionId)); } } } jobController.getWorkflowInstance().executeWork(); } else { if (log.isDebugEnabled()) log.debug("activityInstance is null, job is not executed. Looked for activityInstance: " + jobController.getJob().getActivityInstanceId()); } } }