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
+ material
+ outline
+
+