use of org.jbpm.process.core.timer.NamedJobContext in project jbpm by kiegroup.
the class EjbSchedulerService method getJobName.
private String getJobName(JobContext ctx, Long id) {
String jobname = null;
if (ctx instanceof ProcessJobContext) {
ProcessJobContext processCtx = (ProcessJobContext) ctx;
jobname = processCtx.getSessionId() + "-" + processCtx.getProcessInstanceId() + "-" + processCtx.getTimer().getId();
if (processCtx instanceof StartProcessJobContext) {
jobname = "StartProcess-" + ((StartProcessJobContext) processCtx).getProcessId() + "-" + processCtx.getTimer().getId();
}
} else if (ctx instanceof NamedJobContext) {
jobname = ((NamedJobContext) ctx).getJobName();
} else {
jobname = "Timer-" + ctx.getClass().getSimpleName() + "-" + id;
}
return jobname;
}
use of org.jbpm.process.core.timer.NamedJobContext in project jbpm by kiegroup.
the class GlobalTimerService method getRunner.
public ExecutableRunner getRunner(JobContext jobContext) {
JobContext ctxorig = jobContext;
if (ctxorig instanceof SelfRemovalJobContext) {
ctxorig = ((SelfRemovalJobContext) ctxorig).getJobContext();
}
ProcessJobContext ctx = null;
if (ctxorig instanceof ProcessJobContext) {
ctx = (ProcessJobContext) ctxorig;
} else if (ctxorig instanceof NamedJobContext) {
return getRunner(((NamedJobContext) ctxorig).getProcessInstanceId(), ctx);
} else {
return getRunner();
}
return getRunner(ctx.getProcessInstanceId(), ctx);
}
use of org.jbpm.process.core.timer.NamedJobContext in project jbpm by kiegroup.
the class QuartzSchedulerService method scheduleJob.
@Override
public JobHandle scheduleJob(Job job, JobContext ctx, Trigger trigger) {
Long id = idCounter.getAndIncrement();
String jobname = null;
String groupName = "jbpm";
if (ctx instanceof ProcessJobContext) {
ProcessJobContext processCtx = (ProcessJobContext) ctx;
jobname = processCtx.getSessionId() + "-" + processCtx.getProcessInstanceId() + "-" + processCtx.getTimer().getId();
if (processCtx instanceof StartProcessJobContext) {
jobname = "StartProcess-" + ((StartProcessJobContext) processCtx).getProcessId() + "-" + processCtx.getTimer().getId();
}
String deploymentId = (String) processCtx.getKnowledgeRuntime().getEnvironment().get(EnvironmentName.DEPLOYMENT_ID);
if (deploymentId != null) {
groupName = deploymentId;
}
} else if (ctx instanceof NamedJobContext) {
jobname = ((NamedJobContext) ctx).getJobName();
String deploymentId = ((NamedJobContext) ctx).getDeploymentId();
if (deploymentId != null) {
groupName = deploymentId;
}
} else {
jobname = "Timer-" + ctx.getClass().getSimpleName() + "-" + id;
}
logger.debug("Scheduling timer with name " + jobname);
// check if this scheduler already has such job registered if so there is no need to schedule it again
try {
JobDetail jobDetail = scheduler.getJobDetail(jobKey(jobname, groupName));
if (jobDetail != null) {
TimerJobInstance timerJobInstance = (TimerJobInstance) jobDetail.getJobDataMap().get("timerJobInstance");
return timerJobInstance.getJobHandle();
}
} catch (SchedulerException e) {
}
GlobalQuartzJobHandle quartzJobHandle = new GlobalQuartzJobHandle(id, jobname, groupName);
TimerJobInstance jobInstance = globalTimerService.getTimerJobFactoryManager().createTimerJobInstance(job, ctx, trigger, quartzJobHandle, (InternalSchedulerService) globalTimerService);
quartzJobHandle.setTimerJobInstance((TimerJobInstance) jobInstance);
interceptor.internalSchedule(jobInstance);
return quartzJobHandle;
}
Aggregations