/* * Copyright 2012 Red Hat, Inc. and/or its affiliates. * * 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.jbpm.process.core.timer; import org.drools.core.time.InternalSchedulerService; import org.drools.core.time.JobHandle; import org.drools.core.time.SchedulerService; import org.drools.core.time.TimerService; import org.jbpm.process.core.timer.impl.GlobalTimerService.GlobalJobHandle; /** * Implementations of these interface are responsible for scheduled jobs in global manner, * meaning not knowledge session scoped but global accessible for all the sessions that will * be configured to use this <code>GlobalSchedulerService</code> * */ public interface GlobalSchedulerService extends SchedulerService, InternalSchedulerService { /** * Provides handle to inject timerService that owns this scheduler service and initialize it * @param timerService owner of this scheduler service */ void initScheduler(TimerService timerService); /** * Allows to shutdown the scheduler service */ void shutdown(); /** * Builds JobHandle based on NamedJobContext * @param ctx * @return */ JobHandle buildJobHandleForContext(NamedJobContext ctx); /** * Indicates if given implementation of scheduler service supports * transactional timer store. * @return */ boolean isTransactional(); /** * Indicates if given implementation of scheduler service supports * retries of failed timer jobs * @return */ boolean retryEnabled(); /** * Allows to set interceptor that will be used to schedule timer instances * @param interceptor */ void setInterceptor(SchedulerServiceInterceptor interceptor); /** * Verifies if given job is still valid or it was already executed/vetoed. * Especially important in multi node environments - cluster. * @param jobHandle * @return */ boolean isValid(GlobalJobHandle jobHandle); }