Search in sources :

Example 1 with NamedJobContext

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;
}
Also used : StartProcessJobContext(org.jbpm.process.instance.timer.TimerManager.StartProcessJobContext) ProcessJobContext(org.jbpm.process.instance.timer.TimerManager.ProcessJobContext) StartProcessJobContext(org.jbpm.process.instance.timer.TimerManager.StartProcessJobContext) NamedJobContext(org.jbpm.process.core.timer.NamedJobContext)

Example 2 with NamedJobContext

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);
}
Also used : ProcessJobContext(org.jbpm.process.instance.timer.TimerManager.ProcessJobContext) NamedJobContext(org.jbpm.process.core.timer.NamedJobContext) SelfRemovalJobContext(org.drools.core.time.SelfRemovalJobContext) SelfRemovalJobContext(org.drools.core.time.SelfRemovalJobContext) ProcessJobContext(org.jbpm.process.instance.timer.TimerManager.ProcessJobContext) NamedJobContext(org.jbpm.process.core.timer.NamedJobContext) JobContext(org.drools.core.time.JobContext)

Example 3 with NamedJobContext

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;
}
Also used : StartProcessJobContext(org.jbpm.process.instance.timer.TimerManager.StartProcessJobContext) JobDetail(org.quartz.JobDetail) TimerJobInstance(org.drools.core.time.impl.TimerJobInstance) SchedulerException(org.quartz.SchedulerException) ProcessJobContext(org.jbpm.process.instance.timer.TimerManager.ProcessJobContext) StartProcessJobContext(org.jbpm.process.instance.timer.TimerManager.StartProcessJobContext) AtomicLong(java.util.concurrent.atomic.AtomicLong) NamedJobContext(org.jbpm.process.core.timer.NamedJobContext)

Aggregations

NamedJobContext (org.jbpm.process.core.timer.NamedJobContext)3 ProcessJobContext (org.jbpm.process.instance.timer.TimerManager.ProcessJobContext)3 StartProcessJobContext (org.jbpm.process.instance.timer.TimerManager.StartProcessJobContext)2 AtomicLong (java.util.concurrent.atomic.AtomicLong)1 JobContext (org.drools.core.time.JobContext)1 SelfRemovalJobContext (org.drools.core.time.SelfRemovalJobContext)1 TimerJobInstance (org.drools.core.time.impl.TimerJobInstance)1 JobDetail (org.quartz.JobDetail)1 SchedulerException (org.quartz.SchedulerException)1