Skip to content

Commit

Permalink
business-calendar
Browse files Browse the repository at this point in the history
  • Loading branch information
Abhitocode committed Oct 2, 2024
1 parent a01e6ea commit 7c2e7e5
Show file tree
Hide file tree
Showing 12 changed files with 55 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jbpm.process.core.timer;
package org.kie.kogito.calendar;

import java.util.Date;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

import org.kie.kogito.KogitoConfig;
import org.kie.kogito.auth.IdentityProvider;
import org.kie.kogito.calendar.BusinessCalendar;
import org.kie.kogito.jobs.JobsService;
import org.kie.kogito.signal.SignalManagerHub;
import org.kie.kogito.uow.UnitOfWorkManager;
Expand All @@ -38,4 +39,5 @@ public interface ProcessConfig extends KogitoConfig {
ProcessVersionResolver versionResolver();

IdentityProvider identityProvider();
BusinessCalendar getBusinessCalendar();
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import java.util.regex.Matcher;

import org.jbpm.util.PatternConstants;
import org.kie.kogito.calendar.BusinessCalendar;
import org.kie.kogito.timer.SessionClock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import org.drools.core.phreak.PropagationEntry;
import org.jbpm.process.core.event.EventFilter;
import org.jbpm.process.core.event.EventTypeFilter;
import org.jbpm.process.core.timer.BusinessCalendar;
import org.kie.kogito.calendar.BusinessCalendar;
import org.jbpm.process.core.timer.DateTimeUtils;
import org.jbpm.process.core.timer.Timer;
import org.jbpm.ruleflow.core.RuleFlowProcess;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@
import org.drools.core.time.impl.ThreadSafeTrackableTimeJobFactoryManager;
import org.jbpm.process.core.event.EventFilter;
import org.jbpm.process.core.event.EventTypeFilter;
import org.jbpm.process.core.timer.BusinessCalendar;
import org.kie.kogito.calendar.BusinessCalendar;
import org.jbpm.process.core.timer.BusinessCalendarImpl;
import org.jbpm.process.core.timer.DateTimeUtils;
import org.jbpm.process.core.timer.Timer;
import org.jbpm.process.instance.event.DefaultSignalManagerFactory;
Expand Down Expand Up @@ -77,11 +78,14 @@
import org.kie.kogito.services.uow.DefaultUnitOfWorkManager;
import org.kie.kogito.signal.SignalManager;
import org.kie.kogito.uow.UnitOfWorkManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static org.jbpm.ruleflow.core.Metadata.TRIGGER_MAPPING_INPUT;

public class ProcessRuntimeImpl extends AbstractProcessRuntime {

private static final Logger log = LoggerFactory.getLogger(ProcessRuntimeImpl.class);
private InternalKnowledgeRuntime kruntime;
private ProcessInstanceManager processInstanceManager;
private SignalManager signalManager;
Expand All @@ -101,6 +105,8 @@ public ProcessRuntimeImpl(Application application, InternalWorkingMemory working
unitOfWorkManager = new DefaultUnitOfWorkManager(new CollectingUnitOfWorkFactory());
jobService = new LegacyInMemoryJobService(kogitoProcessRuntime, unitOfWorkManager);
this.processEventSupport = new KogitoProcessEventSupportImpl(new NoOpIdentityProvider());
log.info("initialising process runtime impl");
initCalendar();
if (isActive()) {
initProcessEventListeners();
initStartTimers();
Expand Down Expand Up @@ -558,4 +564,16 @@ public void internalExecute(ReteEvaluator reteEvaluator) {
signalEvent(type, event);
}
}

private void initCalendar() {
try {
log.info("Setting jbpm.business.calendar");
System.out.println("Setting jbpm.business.calendar");
BusinessCalendar calendar = new BusinessCalendarImpl();
kruntime.getEnvironment().set("jbpm.business.calendar", calendar);
} catch (Exception e) {
log.error("calendar.properties could not be loaded");
e.printStackTrace();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
import org.jbpm.process.core.ContextResolver;
import org.jbpm.process.core.context.variable.Variable;
import org.jbpm.process.core.context.variable.VariableScope;
import org.jbpm.process.core.timer.BusinessCalendar;
import org.kie.kogito.calendar.BusinessCalendar;
import org.jbpm.process.core.timer.DateTimeUtils;
import org.jbpm.process.core.timer.Timer;
import org.jbpm.process.instance.ContextInstance;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
import org.drools.core.common.InternalAgenda;
import org.drools.core.common.ReteEvaluator;
import org.drools.core.rule.consequence.InternalMatch;
import org.jbpm.process.core.timer.BusinessCalendar;
import org.kie.kogito.calendar.BusinessCalendar;
import org.jbpm.process.core.timer.DateTimeUtils;
import org.jbpm.process.core.timer.Timer;
import org.jbpm.process.instance.InternalProcessRuntime;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,11 @@
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

import org.jbpm.process.core.timer.BusinessCalendarImpl;
import org.kie.api.event.process.ProcessEventListener;
import org.kie.kogito.Addons;
import org.kie.kogito.auth.IdentityProvider;
import org.kie.kogito.calendar.BusinessCalendar;
import org.kie.kogito.event.EventPublisher;
import org.kie.kogito.jobs.JobsService;
import org.kie.kogito.process.ProcessConfig;
Expand All @@ -51,6 +53,7 @@ public abstract class AbstractProcessConfig implements ProcessConfig {
private final JobsService jobsService;
private final ProcessVersionResolver versionResolver;
private final IdentityProvider identityProvider;
private final BusinessCalendar businessCalendar;

protected AbstractProcessConfig(
Iterable<WorkItemHandlerConfig> workItemHandlerConfig,
Expand All @@ -62,7 +65,8 @@ protected AbstractProcessConfig(
String kogitoService,
Iterable<UnitOfWorkEventListener> unitOfWorkListeners,
Iterable<ProcessVersionResolver> versionResolver,
Iterable<IdentityProvider> identityProvider) {
Iterable<IdentityProvider> identityProvider,
BusinessCalendar businessCalendar) {

this.workItemHandlerConfig = mergeWorkItemHandler(workItemHandlerConfig, DefaultWorkItemHandlerConfig::new);
this.processEventListenerConfig = merge(processEventListenerConfigs, processEventListeners);
Expand All @@ -72,6 +76,7 @@ protected AbstractProcessConfig(
this.jobsService = orDefault(jobsService, () -> null);
this.versionResolver = orDefault(versionResolver, () -> null);
this.identityProvider = orDefault(identityProvider, NoOpIdentityProvider::new);
this.businessCalendar = businessCalendar;

eventPublishers.forEach(publisher -> unitOfWorkManager().eventManager().addPublisher(publisher));
unitOfWorkListeners.forEach(listener -> unitOfWorkManager().register(listener));
Expand Down Expand Up @@ -123,6 +128,10 @@ public ProcessVersionResolver versionResolver() {
public IdentityProvider identityProvider() {
return identityProvider;
}
@Override
public BusinessCalendar getBusinessCalendar() {
return this.businessCalendar;
}

public org.kie.kogito.Addons addons() {
return Addons.EMTPY;
Expand Down
8 changes: 8 additions & 0 deletions jbpm/jbpm-flow/src/main/resources/calendar.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
business.days.per.week=3
business.hours.per.day=9
business.start.hour=8
business.end.hour=17
business.holidays=2024-06-24, 2024-08-01:2024-08-30
business.holiday.date.format=yyyy-MM-dd
business.weekend.days=5,6,7,1
#business.cal.timezone= system default timezone..
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

import org.kie.api.event.process.ProcessEventListener;
import org.kie.kogito.auth.IdentityProvider;
import org.kie.kogito.calendar.BusinessCalendar;
import org.kie.kogito.event.EventPublisher;
import org.kie.kogito.jobs.JobsService;
import org.kie.kogito.process.ProcessEventListenerConfig;
Expand All @@ -44,7 +45,8 @@ public ProcessConfig(
org.kie.kogito.config.ConfigBean configBean,
Instance<UnitOfWorkEventListener> unitOfWorkEventListeners,
Instance<ProcessVersionResolver> versionResolver,
Instance<IdentityProvider> identityProvider) {
Instance<IdentityProvider> identityProvider,
BusinessCalendar businessCalendar) {

super(workItemHandlerConfig,
processEventListenerConfigs,
Expand All @@ -55,7 +57,8 @@ public ProcessConfig(
configBean.getServiceUrl(),
unitOfWorkEventListeners,
versionResolver,
identityProvider);
identityProvider,
businessCalendar);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

import org.kie.api.event.process.ProcessEventListener;
import org.kie.kogito.auth.IdentityProvider;
import org.kie.kogito.calendar.BusinessCalendar;
import org.kie.kogito.event.EventPublisher;
import org.kie.kogito.jobs.JobsService;
import org.kie.kogito.process.ProcessEventListenerConfig;
Expand All @@ -44,7 +45,8 @@ public ProcessConfig(
org.kie.kogito.config.ConfigBean configBean,
List<UnitOfWorkEventListener> unitOfWorkEventListeners,
List<ProcessVersionResolver> versionResolver,
List<IdentityProvider> identityProvider) {
List<IdentityProvider> identityProvider,
BusinessCalendar businessCalendar) {

super(workItemHandlerConfig,
processEventListenerConfigs,
Expand All @@ -55,6 +57,7 @@ public ProcessConfig(
configBean.getServiceUrl(),
unitOfWorkEventListeners,
versionResolver,
identityProvider);
identityProvider,
businessCalendar);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
@ApplicationScoped
public class ProcessServiceProducer {


@Produces
public ProcessService processService(Application application){
return new ProcessServiceImpl(application);
Expand Down

0 comments on commit 7c2e7e5

Please sign in to comment.