public void run() { try { work = workAsync; workAsync = null; isAsync = true; if (updates != null) { getUpdates().isWorkChanged = true; getUpdates().isAsyncWorkChanged = true; } executeWork(); } catch (Throwable e) { log.error("in workflow execution", e); } } };
/** Second part of starting a new workflow instance: executing the start activities. */ public WorkflowInstance startExecute(WorkflowInstanceImpl workflowInstance) { WorkflowImpl workflow = workflowInstance.workflow; if (log.isDebugEnabled()) log.debug("Starting "+workflowInstance); if (workflow.startActivities!=null) { for (ActivityImpl startActivityDefinition: workflow.startActivities) { if (workflowInstance.startActivityIds == null || workflowInstance.startActivityIds.contains(startActivityDefinition.getId())) { workflowInstance.execute(startActivityDefinition); } } } else { workflowInstance.endAndPropagateToParent(); } notifyInsert(workflowInstance); workflowInstanceStore.insertWorkflowInstance(workflowInstance); return workflowInstance.executeWork(); }
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(); }
return workflowInstanceImpl.executeWork(); } finally { workflowInstanceStore.unlockWorkflowInstance(workflowInstanceImpl);
@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()); } } }