diff --git a/src/main/java/com/netgrif/application/engine/workflow/domain/triggers/DateTimeTrigger.java b/src/main/java/com/netgrif/application/engine/workflow/domain/triggers/DateTimeTrigger.java index 548b4d89b0b..c311ebbb5ff 100644 --- a/src/main/java/com/netgrif/application/engine/workflow/domain/triggers/DateTimeTrigger.java +++ b/src/main/java/com/netgrif/application/engine/workflow/domain/triggers/DateTimeTrigger.java @@ -1,6 +1,8 @@ package com.netgrif.application.engine.workflow.domain.triggers; import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.ZoneId; import java.time.format.DateTimeParseException; /** @@ -21,7 +23,15 @@ public class DateTimeTrigger extends TimeTrigger { */ public DateTimeTrigger(String timeString) throws DateTimeParseException { super(timeString); - startDate = LocalDateTime.parse(timeString); + try { + startDate = LocalDateTime.parse(timeString); + } catch (DateTimeParseException e) { + OffsetDateTime offsetDateTime = OffsetDateTime.parse(timeString); + startInstant = offsetDateTime.toInstant(); + startDate = offsetDateTime + .atZoneSameInstant(ZoneId.systemDefault()) + .toLocalDateTime(); + } } @Override diff --git a/src/main/java/com/netgrif/application/engine/workflow/domain/triggers/TimeTrigger.java b/src/main/java/com/netgrif/application/engine/workflow/domain/triggers/TimeTrigger.java index 134fb7b03c2..586f7729fdd 100644 --- a/src/main/java/com/netgrif/application/engine/workflow/domain/triggers/TimeTrigger.java +++ b/src/main/java/com/netgrif/application/engine/workflow/domain/triggers/TimeTrigger.java @@ -3,6 +3,7 @@ import lombok.Getter; import lombok.Setter; +import java.time.Instant; import java.time.LocalDateTime; public abstract class TimeTrigger extends Trigger { @@ -11,6 +12,10 @@ public abstract class TimeTrigger extends Trigger { @Setter protected LocalDateTime startDate; + @Getter + @Setter + protected Instant startInstant; + @Getter protected String timeString; diff --git a/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java b/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java index 2e455c3e0c6..67774980896 100644 --- a/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java +++ b/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java @@ -619,15 +619,19 @@ void validateData(Transition transition, Case useCase) { } } - protected void scheduleTaskExecution(Task task, LocalDateTime time, Case useCase) { - log.info("[" + useCase.getStringId() + "]: Task " + task.getTitle() + " scheduled to run at " + time.toString()); + protected void scheduleTaskExecution(Task task, TimeTrigger trigger, Case useCase) { + Date runAt = trigger.getStartInstant() != null + ? Date.from(trigger.getStartInstant()) + : DateUtils.localDateTimeToDate(trigger.getStartDate()); + log.info("[{}]: Task {} scheduled to run at {}", useCase.getStringId(), task.getTitle(), runAt); scheduler.schedule(() -> { try { executeTransition(task, useCase); } catch (Exception e) { - log.info("[" + useCase.getStringId() + "]: Scheduled task [" + task.getTitle() + "] of case [" + useCase.getTitle() + "] could not be executed: " + e); + log.info("[{}]: Scheduled task [{}] of case [{}] could not be executed:", useCase.getStringId(), + task.getTitle(), useCase.getTitle(), e); } - }, DateUtils.localDateTimeToDate(time)); + }, runAt); } @Override @@ -854,7 +858,7 @@ private Task createFromTransition(Transition transition, Case useCase) { if (taskTrigger instanceof TimeTrigger) { TimeTrigger timeTrigger = (TimeTrigger) taskTrigger; - scheduleTaskExecution(task, timeTrigger.getStartDate(), useCase); + scheduleTaskExecution(task, timeTrigger, useCase); } } ProcessRole defaultRole = processRoleService.defaultRole(); diff --git a/src/main/resources/petriNets/engine-processes/process.xml b/src/main/resources/petriNets/engine-processes/process.xml index 3a9225b50e8..f1d6ff6af50 100644 --- a/src/main/resources/petriNets/engine-processes/process.xml +++ b/src/main/resources/petriNets/engine-processes/process.xml @@ -389,7 +389,7 @@ if (editIsAssigned) { cancelTask("edit") } - //Frontend.readOnlyBuilder() + Frontend.readOnlyBuilder() ]]> @@ -615,6 +615,20 @@ outline + + xml_text + + hidden + + + 0 + 4 + 1 + 4 + + outline + +