This is an automated email from the ASF dual-hosted git repository.
pefernan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-apps.git
The following commit(s) were added to refs/heads/main by this push:
new fd0e91dd7 [incubator-kie-issues#1637] Add SLA due date to
UserTaskInstances (#2151)
fd0e91dd7 is described below
commit fd0e91dd72c269a1b10cf20afdb718aca22c3238
Author: Martin Weiler <[email protected]>
AuthorDate: Wed Dec 18 04:03:56 2024 -0700
[incubator-kie-issues#1637] Add SLA due date to UserTaskInstances (#2151)
---
.../src/main/resources/basic.schema.graphqls | 3 ++-
.../org/kie/kogito/index/model/UserTaskInstance.java | 12 ++++++++++++
.../merger/UserTaskInstanceStateEventMerger.java | 1 +
.../protostream/UserTaskInstanceMarshaller.java | 3 +++
.../protostream/UserTaskInstanceMarshallerTest.java | 5 +++++
.../index/jpa/model/UserTaskInstanceEntity.java | 11 ++++++++++-
.../jpa/storage/UserTaskInstanceEntityStorage.java | 1 +
.../ansi/V1.45.0.7__add_sla_due_date_tasks.sql | 20 ++++++++++++++++++++
.../index/mongodb/model/UserTaskInstanceEntity.java | 11 +++++++++++
.../mongodb/model/UserTaskInstanceEntityMapper.java | 2 ++
.../model/UserTaskInstanceEntityMapperTest.java | 2 ++
.../postgresql/V1.45.0.7__add_sla_due_date_tasks.sql | 20 ++++++++++++++++++++
.../src/main/resources/META-INF/kogito-index.proto | 2 ++
13 files changed, 91 insertions(+), 2 deletions(-)
diff --git
a/data-index/data-index-graphql/src/main/resources/basic.schema.graphqls
b/data-index/data-index-graphql/src/main/resources/basic.schema.graphqls
index f30e90c7e..0f9ca7628 100644
--- a/data-index/data-index-graphql/src/main/resources/basic.schema.graphqls
+++ b/data-index/data-index-graphql/src/main/resources/basic.schema.graphqls
@@ -371,6 +371,7 @@ type UserTaskInstance {
comments: [Comment!]
attachments: [Attachment!]
externalReferenceId : String
+ slaDueDate: DateTime
}
input UserTaskInstanceArgument {
@@ -490,4 +491,4 @@ input JobOrderBy {
retries: OrderBy
lastUpdate: OrderBy
executionCounter: OrderBy
-}
\ No newline at end of file
+}
diff --git
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/UserTaskInstance.java
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/UserTaskInstance.java
index b87d73777..0aca4380a 100644
---
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/UserTaskInstance.java
+++
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/UserTaskInstance.java
@@ -18,6 +18,8 @@
*/
package org.kie.kogito.index.model;
+import java.time.ZonedDateTime;
+
import com.fasterxml.jackson.databind.node.ObjectNode;
public class UserTaskInstance extends UserTaskInstanceMeta {
@@ -29,6 +31,7 @@ public class UserTaskInstance extends UserTaskInstanceMeta {
private ObjectNode outputs;
private String endpoint;
private String externalReferenceId;
+ private ZonedDateTime slaDueDate;
public String getProcessId() {
return processId;
@@ -67,6 +70,7 @@ public class UserTaskInstance extends UserTaskInstanceMeta {
", inputs=" + inputs +
", outputs=" + outputs +
", endpoint='" + endpoint + '\'' +
+ ", slaDueDate=" + slaDueDate +
"} " + super.toString();
}
@@ -103,4 +107,12 @@ public class UserTaskInstance extends UserTaskInstanceMeta
{
public void setExternalReferenceId(String externalReferenceId) {
this.externalReferenceId = externalReferenceId;
}
+
+ public ZonedDateTime getSlaDueDate() {
+ return slaDueDate;
+ }
+
+ public void setSlaDueDate(ZonedDateTime slaDueDate) {
+ this.slaDueDate = slaDueDate;
+ }
}
diff --git
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/UserTaskInstanceStateEventMerger.java
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/UserTaskInstanceStateEventMerger.java
index 8e813f07e..a6d11e33f 100644
---
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/UserTaskInstanceStateEventMerger.java
+++
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/UserTaskInstanceStateEventMerger.java
@@ -62,6 +62,7 @@ public class UserTaskInstanceStateEventMerger implements
UserTaskInstanceEventMe
task.setLastUpdate(toZonedDateTime(event.getData().getEventDate()));
task.setReferenceName(event.getData().getUserTaskReferenceName());
task.setExternalReferenceId(event.getData().getExternalReferenceId());
+ task.setSlaDueDate(toZonedDateTime(event.getData().getSlaDueDate()));
LOGGER.debug("value after merging: {}", task);
return task;
}
diff --git
a/data-index/data-index-storage/data-index-storage-infinispan/src/main/java/org/kie/kogito/index/infinispan/protostream/UserTaskInstanceMarshaller.java
b/data-index/data-index-storage/data-index-storage-infinispan/src/main/java/org/kie/kogito/index/infinispan/protostream/UserTaskInstanceMarshaller.java
index ff852b572..bca1a0efa 100644
---
a/data-index/data-index-storage/data-index-storage-infinispan/src/main/java/org/kie/kogito/index/infinispan/protostream/UserTaskInstanceMarshaller.java
+++
b/data-index/data-index-storage/data-index-storage-infinispan/src/main/java/org/kie/kogito/index/infinispan/protostream/UserTaskInstanceMarshaller.java
@@ -58,6 +58,7 @@ public class UserTaskInstanceMarshaller extends
AbstractMarshaller implements Me
protected static final String COMMENTS = "comments";
protected static final String ATTACHMENTS = "attachments";
protected static final String EXTERNAL_REFERENCE_ID =
"externalReferenceId";
+ protected static final String SLA_DUE_DATE = "slaDueDate";
public UserTaskInstanceMarshaller(ObjectMapper mapper) {
super(mapper);
@@ -91,6 +92,7 @@ public class UserTaskInstanceMarshaller extends
AbstractMarshaller implements Me
ut.setComments(reader.readCollection(COMMENTS, new ArrayList<>(),
Comment.class));
ut.setAttachments(reader.readCollection(ATTACHMENTS, new
ArrayList<>(), Attachment.class));
ut.setExternalReferenceId(reader.readString(EXTERNAL_REFERENCE_ID));
+ ut.setSlaDueDate(dateToZonedDateTime(reader.readDate(SLA_DUE_DATE)));
return ut;
}
@@ -121,6 +123,7 @@ public class UserTaskInstanceMarshaller extends
AbstractMarshaller implements Me
writer.writeCollection(COMMENTS, ut.getComments(), Comment.class);
writer.writeCollection(ATTACHMENTS, ut.getAttachments(),
Attachment.class);
writer.writeString(EXTERNAL_REFERENCE_ID, ut.getExternalReferenceId());
+ writer.writeDate(SLA_DUE_DATE,
zonedDateTimeToDate(ut.getSlaDueDate()));
}
@Override
diff --git
a/data-index/data-index-storage/data-index-storage-infinispan/src/test/java/org/kie/kogito/index/infinispan/protostream/UserTaskInstanceMarshallerTest.java
b/data-index/data-index-storage/data-index-storage-infinispan/src/test/java/org/kie/kogito/index/infinispan/protostream/UserTaskInstanceMarshallerTest.java
index 07f98b1ac..687c2d0fe 100644
---
a/data-index/data-index-storage/data-index-storage-infinispan/src/test/java/org/kie/kogito/index/infinispan/protostream/UserTaskInstanceMarshallerTest.java
+++
b/data-index/data-index-storage/data-index-storage-infinispan/src/test/java/org/kie/kogito/index/infinispan/protostream/UserTaskInstanceMarshallerTest.java
@@ -61,6 +61,7 @@ import static
org.kie.kogito.index.infinispan.protostream.UserTaskInstanceMarsha
import static
org.kie.kogito.index.infinispan.protostream.UserTaskInstanceMarshaller.REFERENCE_NAME;
import static
org.kie.kogito.index.infinispan.protostream.UserTaskInstanceMarshaller.ROOT_PROCESS_ID;
import static
org.kie.kogito.index.infinispan.protostream.UserTaskInstanceMarshaller.ROOT_PROCESS_INSTANCE_ID;
+import static
org.kie.kogito.index.infinispan.protostream.UserTaskInstanceMarshaller.SLA_DUE_DATE;
import static
org.kie.kogito.index.infinispan.protostream.UserTaskInstanceMarshaller.STARTED;
import static
org.kie.kogito.index.infinispan.protostream.UserTaskInstanceMarshaller.STATE;
import static org.mockito.ArgumentMatchers.any;
@@ -102,6 +103,7 @@ class UserTaskInstanceMarshallerTest {
TASK.setLastUpdate(ZonedDateTime.now(ZoneOffset.UTC).truncatedTo(ChronoUnit.MILLIS));
TASK.setEndpoint("endpoint");
TASK.setExternalReferenceId("externalReferenceId");
+ TASK.setSlaDueDate(time);
TASK.setComments(List.of(Comment.builder()
.id("attId")
.content("Text comment")
@@ -147,6 +149,7 @@ class UserTaskInstanceMarshallerTest {
when(reader.readCollection(eq(COMMENTS), any(),
eq(Comment.class))).thenReturn(TASK.getComments());
when(reader.readCollection(eq(ATTACHMENTS), any(),
eq(Attachment.class))).thenReturn(TASK.getAttachments());
when(reader.readString(EXTERNAL_REFERENCE_ID)).thenReturn(TASK.getExternalReferenceId());
+
when(reader.readDate(SLA_DUE_DATE)).thenReturn(marshaller.zonedDateTimeToDate(TASK.getSlaDueDate()));
UserTaskInstance task = marshaller.readFrom(reader);
@@ -178,6 +181,7 @@ class UserTaskInstanceMarshallerTest {
inOrder.verify(reader).readCollection(COMMENTS, new ArrayList<>(),
Comment.class);
inOrder.verify(reader).readCollection(ATTACHMENTS, new ArrayList<>(),
Attachment.class);
inOrder.verify(reader).readString(EXTERNAL_REFERENCE_ID);
+ inOrder.verify(reader).readDate(SLA_DUE_DATE);
verifyNoMoreInteractions(reader);
}
@@ -214,6 +218,7 @@ class UserTaskInstanceMarshallerTest {
inOrder.verify(writer).writeCollection(COMMENTS, TASK.getComments(),
Comment.class);
inOrder.verify(writer).writeCollection(ATTACHMENTS,
TASK.getAttachments(), Attachment.class);
inOrder.verify(writer).writeString(EXTERNAL_REFERENCE_ID,
TASK.getExternalReferenceId());
+ inOrder.verify(writer).writeDate(SLA_DUE_DATE,
marshaller.zonedDateTimeToDate(TASK.getSlaDueDate()));
verifyNoMoreInteractions(writer);
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/UserTaskInstanceEntity.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/UserTaskInstanceEntity.java
index 314174ed1..7b97570c7 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/UserTaskInstanceEntity.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/UserTaskInstanceEntity.java
@@ -90,8 +90,8 @@ public class UserTaskInstanceEntity extends AbstractEntity {
private List<CommentEntity> comments;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "userTask", orphanRemoval
= true, fetch = FetchType.LAZY)
private List<AttachmentEntity> attachments;
-
private String externalReferenceId;
+ private ZonedDateTime slaDueDate;
public String getExternalReferenceId() {
return externalReferenceId;
@@ -294,6 +294,14 @@ public class UserTaskInstanceEntity extends AbstractEntity
{
this.attachments = attachments;
}
+ public ZonedDateTime getSlaDueDate() {
+ return slaDueDate;
+ }
+
+ public void setSlaDueDate(ZonedDateTime slaDueDate) {
+ this.slaDueDate = slaDueDate;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) {
@@ -338,6 +346,7 @@ public class UserTaskInstanceEntity extends AbstractEntity {
", endpoint='" + endpoint + '\'' +
", comments='" + comments + '\'' +
", attachments='" + attachments + '\'' +
+ ", slaDueDate=" + slaDueDate +
'}';
}
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/UserTaskInstanceEntityStorage.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/UserTaskInstanceEntityStorage.java
index 5204db657..66cb04d03 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/UserTaskInstanceEntityStorage.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/UserTaskInstanceEntityStorage.java
@@ -201,6 +201,7 @@ public class UserTaskInstanceEntityStorage extends
AbstractJPAStorageFetcher<Str
task.setLastUpdate(toZonedDateTime(event.getData().getEventDate()));
task.setReferenceName(event.getData().getUserTaskReferenceName());
task.setExternalReferenceId(body.getExternalReferenceId());
+ task.setSlaDueDate(toZonedDateTime(body.getSlaDueDate()));
}
private String getEndpoint(URI source, String pId, String taskName, String
taskId) {
diff --git
a/data-index/data-index-storage/data-index-storage-jpa/src/main/resources/kie-flyway/db/data-index/ansi/V1.45.0.7__add_sla_due_date_tasks.sql
b/data-index/data-index-storage/data-index-storage-jpa/src/main/resources/kie-flyway/db/data-index/ansi/V1.45.0.7__add_sla_due_date_tasks.sql
new file mode 100644
index 000000000..2164293a9
--- /dev/null
+++
b/data-index/data-index-storage/data-index-storage-jpa/src/main/resources/kie-flyway/db/data-index/ansi/V1.45.0.7__add_sla_due_date_tasks.sql
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+ALTER TABLE tasks ADD sla_due_date timestamp;
diff --git
a/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/UserTaskInstanceEntity.java
b/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/UserTaskInstanceEntity.java
index c97c753dc..ca21ba455 100644
---
a/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/UserTaskInstanceEntity.java
+++
b/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/UserTaskInstanceEntity.java
@@ -78,6 +78,8 @@ public class UserTaskInstanceEntity {
private String externalReferenceId;
+ private Long slaDueDate;
+
public String getId() {
return id;
}
@@ -278,6 +280,14 @@ public class UserTaskInstanceEntity {
return externalReferenceId;
}
+ public Long getSlaDueDate() {
+ return slaDueDate;
+ }
+
+ public void setSlaDueDate(Long slaDueDate) {
+ this.slaDueDate = slaDueDate;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) {
@@ -322,6 +332,7 @@ public class UserTaskInstanceEntity {
", endpoint='" + endpoint + '\'' +
", comments='" + comments + '\'' +
", attachments='" + attachments + '\'' +
+ ", slaDueDate=" + slaDueDate +
'}';
}
diff --git
a/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/UserTaskInstanceEntityMapper.java
b/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/UserTaskInstanceEntityMapper.java
index 1a8b9add5..707ea28d7 100644
---
a/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/UserTaskInstanceEntityMapper.java
+++
b/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/UserTaskInstanceEntityMapper.java
@@ -80,6 +80,7 @@ public class UserTaskInstanceEntityMapper implements
MongoEntityMapper<UserTaskI
entity.setComments(Optional.ofNullable(instance.getComments()).map(comments ->
comments.stream().map(this::fromComment).collect(toList())).orElse(null));
entity.setAttachments(Optional.ofNullable(instance.getAttachments()).map(attachments
->
attachments.stream().map(this::fromAttachment).collect(toList())).orElse(null));
entity.setExternalReferenceId(instance.getExternalReferenceId());
+ entity.setSlaDueDate(zonedDateTimeToInstant(instance.getSlaDueDate()));
return entity;
}
@@ -115,6 +116,7 @@ public class UserTaskInstanceEntityMapper implements
MongoEntityMapper<UserTaskI
instance.setComments(Optional.ofNullable(entity.getComments()).map(comments ->
comments.stream().map(this::toComment).collect(toList())).orElse(null));
instance.setAttachments(Optional.ofNullable(entity.getAttachments()).map(attachments
->
attachments.stream().map(this::toAttachment).collect(toList())).orElse(null));
instance.setExternalReferenceId(entity.getExternalReferenceId());
+ instance.setSlaDueDate(instantToZonedDateTime(entity.getSlaDueDate()));
return instance;
}
diff --git
a/data-index/data-index-storage/data-index-storage-mongodb/src/test/java/org/kie/kogito/index/mongodb/model/UserTaskInstanceEntityMapperTest.java
b/data-index/data-index-storage/data-index-storage-mongodb/src/test/java/org/kie/kogito/index/mongodb/model/UserTaskInstanceEntityMapperTest.java
index 013ba7a04..6a0f6f9b3 100644
---
a/data-index/data-index-storage/data-index-storage-mongodb/src/test/java/org/kie/kogito/index/mongodb/model/UserTaskInstanceEntityMapperTest.java
+++
b/data-index/data-index-storage/data-index-storage-mongodb/src/test/java/org/kie/kogito/index/mongodb/model/UserTaskInstanceEntityMapperTest.java
@@ -116,6 +116,7 @@ class UserTaskInstanceEntityMapperTest {
userTaskInstance.setComments(List.of(comment));
userTaskInstance.setAttachments(List.of(attachment));
userTaskInstance.setExternalReferenceId(externalReferenceId);
+ userTaskInstance.setSlaDueDate(time);
userTaskInstanceEntity = new UserTaskInstanceEntity();
userTaskInstanceEntity.setId(testId);
@@ -142,6 +143,7 @@ class UserTaskInstanceEntityMapperTest {
userTaskInstanceEntity.setComments(List.of(commentEntity));
userTaskInstanceEntity.setAttachments(List.of(attachmentEntity));
userTaskInstanceEntity.setExternalReferenceId(externalReferenceId);
+ userTaskInstanceEntity.setSlaDueDate(zonedDateTimeToInstant(time));
}
@Test
diff --git
a/data-index/data-index-storage/data-index-storage-postgresql/src/main/resources/kie-flyway/db/data-index/postgresql/V1.45.0.7__add_sla_due_date_tasks.sql
b/data-index/data-index-storage/data-index-storage-postgresql/src/main/resources/kie-flyway/db/data-index/postgresql/V1.45.0.7__add_sla_due_date_tasks.sql
new file mode 100644
index 000000000..84c67e7ee
--- /dev/null
+++
b/data-index/data-index-storage/data-index-storage-postgresql/src/main/resources/kie-flyway/db/data-index/postgresql/V1.45.0.7__add_sla_due_date_tasks.sql
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+ALTER TABLE IF exists tasks ADD COLUMN IF NOT EXISTS sla_due_date timestamp;
diff --git
a/data-index/data-index-storage/data-index-storage-protobuf/src/main/resources/META-INF/kogito-index.proto
b/data-index/data-index-storage/data-index-storage-protobuf/src/main/resources/META-INF/kogito-index.proto
index ed6d7c09e..3460ff5a2 100644
---
a/data-index/data-index-storage/data-index-storage-protobuf/src/main/resources/META-INF/kogito-index.proto
+++
b/data-index/data-index-storage/data-index-storage-protobuf/src/main/resources/META-INF/kogito-index.proto
@@ -240,6 +240,7 @@ message UserTaskInstance {
/* @Field(store = Store.YES) */
repeated Attachment attachments = 24;
optional string externalReferenceId = 25;
+ optional int64 slaDueDate = 26;
}
/* @Indexed */
@@ -279,6 +280,7 @@ message UserTaskInstanceMeta {
/* @Field(store = Store.YES) */
repeated Attachment attachments = 18;
optional string externalReferenceId = 25;
+ optional int64 slaDueDate = 26;
}
/* @Indexed */
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]