/* 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.crystalball.simulator.processengine.jobexecutor;
import java.util.List;
import org.activiti.engine.impl.cmd.AcquireJobsCmd;
import org.activiti.engine.impl.jobexecutor.AcquireJobsRunnable;
import org.activiti.engine.impl.jobexecutor.DefaultJobExecutor;
import org.activiti.engine.impl.jobexecutor.ExecuteJobsRunnable;
import org.activiti.engine.impl.jobexecutor.SimulationAcquireJobsRunnable;
/**
* simulation is driven by simulation time. That's why JobExecutor
* has to be driven by simulation time too.
*
* @author martin.grofcik
*/
public class SimulationDefaultJobExecutor extends DefaultJobExecutor {
public SimulationDefaultJobExecutor() {
}
/**
* use SimulationAcquireJobsRunnable instead of AcquireJobsRunnable.
* To use simulation time instead of "real" time
*/
@Override
protected void ensureInitialization() {
acquireJobsCmd = new AcquireJobsCmd(this);
acquireJobsRunnable = new SimulationAcquireJobsRunnable(this);
}
/**
* do not execute new thread - simulation time can move too forward.
*
*/
public void executeJobs(List<String> jobIds) {
(new ExecuteJobsRunnable(this, jobIds)).run();
}
public AcquireJobsRunnable getAcquireJobsRunnable() {
return acquireJobsRunnable;
}
protected void startJobAcquisitionThread() {
// if (jobAcquisitionThread == null) {
// jobAcquisitionThread = new Thread(acquireJobsRunnable);
// jobAcquisitionThread.start();
// }
}
protected void stopJobAcquisitionThread() {
// try {
// jobAcquisitionThread.join();
// } catch (InterruptedException e) {
// log.log(
// Level.WARNING,
// "Interrupted while waiting for the job Acquisition thread to terminate",
// e);
// }
// jobAcquisitionThread = null;
}
}