This is an automated email from the ASF dual-hosted git repository.
egonzalez 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 b3e3d5a21 [kie-issues#1965] Support re-scheduling Process Instances
and Node Instances SLA timers (#2230)
b3e3d5a21 is described below
commit b3e3d5a21fa8283f71e76ecb19a642fed7e48380
Author: Pere Fernández <[email protected]>
AuthorDate: Fri May 30 10:21:44 2025 +0200
[kie-issues#1965] Support re-scheduling Process Instances and Node
Instances SLA timers (#2230)
---
.../kogito/app/audit/jpa/JPADataAuditStore.java | 63 ++++++++++------------
.../audit/jpa/model/ProcessInstanceNodeLog.java | 3 +-
.../audit/jpa/model/ProcessInstanceStateLog.java | 1 +
.../V1.4.1__Add_state_update_event_type_check.sql | 23 ++++++++
.../V1.4.1__Add_state_update_event_type_check.sql | 24 +++++++++
.../kie/kogito/index/api/KogitoRuntimeClient.java | 5 ++
.../graphql/AbstractGraphQLSchemaManager.java | 25 +++++++++
.../src/main/resources/basic.schema.graphqls | 2 +
.../index/service/api/KogitoRuntimeClientImpl.java | 15 ++++++
.../service/graphql/GraphQLSchemaManagerImpl.java | 2 +
.../addon/api/KogitoAddonRuntimeClientImpl.java | 17 ++++++
.../graphql/GraphQLAddonSchemaManagerImpl.java | 2 +
.../kogito/jobs/embedded/EmbeddedJobsService.java | 6 +++
13 files changed, 152 insertions(+), 36 deletions(-)
diff --git
a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java
b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java
index a8a4f89b0..089e22303 100644
---
a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java
+++
b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/JPADataAuditStore.java
@@ -93,23 +93,22 @@ public class JPADataAuditStore implements DataAuditStore {
setProcessCommonAttributes(log, event);
log.setState(String.valueOf(event.getData().getState()));
log.setRoles(event.getData().getRoles());
+ log.setSlaDueDate(event.getData().getSlaDueDate());
+ log.setEventType(fromProcessInstanceStateDataEvent(event));
EntityManager entityManager = context.getContext();
- switch (event.getData().getEventType()) {
- case ProcessInstanceStateEventBody.EVENT_TYPE_STARTED:
- log.setEventType(ProcessStateLogType.ACTIVE);
- entityManager.persist(log);
- break;
- case ProcessInstanceStateEventBody.EVENT_TYPE_ENDED:
- log.setEventType(ProcessStateLogType.COMPLETED);
- entityManager.persist(log);
- break;
- case ProcessInstanceStateEventBody.EVENT_TYPE_MIGRATED:
- log.setEventType(ProcessStateLogType.MIGRATED);
- entityManager.persist(log);
- break;
- }
+ entityManager.persist(log);
+ }
+
+ private ProcessStateLogType
fromProcessInstanceStateDataEvent(ProcessInstanceStateDataEvent event) {
+ return switch (event.getData().getEventType()) {
+ case ProcessInstanceStateEventBody.EVENT_TYPE_STARTED ->
ProcessStateLogType.ACTIVE;
+ case ProcessInstanceStateEventBody.EVENT_TYPE_ENDED ->
ProcessStateLogType.COMPLETED;
+ case ProcessInstanceStateEventBody.EVENT_TYPE_MIGRATED ->
ProcessStateLogType.MIGRATED;
+ case ProcessInstanceStateEventBody.EVENT_TYPE_UPDATED ->
ProcessStateLogType.STATE_UPDATED;
+ default -> throw new IllegalArgumentException("Unknown
ProcessInstanceStateDataEvent type " + event.getData().getEventType());
+ };
}
@Override
@@ -134,37 +133,31 @@ public class JPADataAuditStore implements DataAuditStore {
log.setConnection(event.getData().getConnectionNodeDefinitionId());
log.setNodeDefinitionId(event.getData().getNodeDefinitionId());
log.setNodeType(event.getData().getNodeType());
+ log.setSlaDueDate(event.getData().getSlaDueDate());
log.setNodeInstanceId(event.getData().getNodeInstanceId());
log.setNodeName(event.getData().getNodeName());
- switch (event.getData().getEventType()) {
- case ProcessInstanceNodeEventBody.EVENT_TYPE_ENTER:
- log.setEventType(NodeLogType.ENTER);
- break;
- case ProcessInstanceNodeEventBody.EVENT_TYPE_EXIT:
- log.setEventType(NodeLogType.EXIT);
- break;
- case ProcessInstanceNodeEventBody.EVENT_TYPE_ABORTED:
- log.setEventType(NodeLogType.ABORTED);
- break;
- case ProcessInstanceNodeEventBody.EVENT_TYPE_SKIPPED:
- log.setEventType(NodeLogType.SKIPPED);
- break;
- case ProcessInstanceNodeEventBody.EVENT_TYPE_OBSOLETE:
- log.setEventType(NodeLogType.OBSOLETE);
- break;
- case ProcessInstanceNodeEventBody.EVENT_TYPE_ERROR:
- log.setEventType(NodeLogType.ERROR);
- break;
-
- }
+ log.setEventType(fromProcessInstanceNodeDataEvent(event));
log.setWorkItemId(event.getData().getWorkItemId());
EntityManager entityManager = context.getContext();
entityManager.persist(log);
}
+ private NodeLogType
fromProcessInstanceNodeDataEvent(ProcessInstanceNodeDataEvent event) {
+ return switch (event.getData().getEventType()) {
+ case ProcessInstanceNodeEventBody.EVENT_TYPE_ENTER ->
NodeLogType.ENTER;
+ case ProcessInstanceNodeEventBody.EVENT_TYPE_EXIT ->
NodeLogType.EXIT;
+ case ProcessInstanceNodeEventBody.EVENT_TYPE_ABORTED ->
NodeLogType.ABORTED;
+ case ProcessInstanceNodeEventBody.EVENT_TYPE_SKIPPED ->
NodeLogType.SKIPPED;
+ case ProcessInstanceNodeEventBody.EVENT_TYPE_OBSOLETE ->
NodeLogType.OBSOLETE;
+ case ProcessInstanceNodeEventBody.EVENT_TYPE_ERROR ->
NodeLogType.ERROR;
+ case ProcessInstanceNodeEventBody.EVENT_TYPE_UPDATED ->
NodeLogType.STATE_UPDATED;
+ default -> throw new IllegalArgumentException("Unknown
ProcessInstanceNodeDataEvent type " + event.getData().getEventType());
+ };
+ }
+
@Override
public void storeProcessInstanceDataEvent(DataAuditContext context,
ProcessInstanceSLADataEvent event) {
EntityManager entityManager = context.getContext();
diff --git
a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java
b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java
index 21edd62e9..996321492 100644
---
a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java
+++
b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceNodeLog.java
@@ -52,7 +52,8 @@ public class ProcessInstanceNodeLog extends
AbstractProcessInstanceLog {
OBSOLETE,
SKIPPED,
ERROR,
- SLA_VIOLATION
+ SLA_VIOLATION,
+ STATE_UPDATED
}
@Id
diff --git
a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java
b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java
index abb860806..18a6e55f8 100644
---
a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java
+++
b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/java/org/kie/kogito/app/audit/jpa/model/ProcessInstanceStateLog.java
@@ -55,6 +55,7 @@ public class ProcessInstanceStateLog extends
AbstractProcessInstanceLog {
COMPLETED,
MIGRATED,
SLA_VIOLATION,
+ STATE_UPDATED,
}
@Id
diff --git
a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/kie-flyway/db/data-audit/h2/V1.4.1__Add_state_update_event_type_check.sql
b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/kie-flyway/db/data-audit/h2/V1.4.1__Add_state_update_event_type_check.sql
new file mode 100644
index 000000000..af3dad73d
--- /dev/null
+++
b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/kie-flyway/db/data-audit/h2/V1.4.1__Add_state_update_event_type_check.sql
@@ -0,0 +1,23 @@
+/*
+ * 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 Process_Instance_Node_Log drop constraint
Process_Instance_Node_Log_event_type_check;
+alter table if exists Process_Instance_State_Log drop constraint
Process_Instance_State_Log_event_type_check;
+alter table if exists Process_Instance_Node_Log add constraint
Process_Instance_Node_Log_event_type_check check (event_type in
('ENTER','EXIT','ABORTED','ASYNC_ENTER','OBSOLETE','SKIPPED','ERROR','SLA_VIOLATION','STATE_UPDATED'));
+alter table if exists Process_Instance_State_Log add constraint
Process_Instance_State_Log_event_type_check check (event_type in
('ACTIVE','STARTED','COMPLETED','ABORTED','SLA_VIOLATION','PENDING','SUSPENDING','ERROR','STATE_UPDATED'));
\ No newline at end of file
diff --git
a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/kie-flyway/db/data-audit/postgresql/V1.4.1__Add_state_update_event_type_check.sql
b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/kie-flyway/db/data-audit/postgresql/V1.4.1__Add_state_update_event_type_check.sql
new file mode 100644
index 000000000..75dd18035
--- /dev/null
+++
b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-common/src/main/resources/kie-flyway/db/data-audit/postgresql/V1.4.1__Add_state_update_event_type_check.sql
@@ -0,0 +1,24 @@
+/*
+ * 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 Process_Instance_Node_Log drop constraint
Process_Instance_Node_Log_event_type_check;
+alter table if exists Process_Instance_State_Log drop constraint
Process_Instance_State_Log_event_type_check;
+
+alter table if exists Process_Instance_Node_Log add constraint
Process_Instance_Node_Log_event_type_check check (event_type in
('ENTER','EXIT','ABORTED','ASYNC_ENTER','OBSOLETE','SKIPPED','ERROR','SLA_VIOLATION','STATE_UPDATED'));
+alter table if exists Process_Instance_State_Log add constraint
Process_Instance_State_Log_event_type_check check (event_type in
('ACTIVE','STARTED','COMPLETED','ABORTED','SLA_VIOLATION','PENDING','SUSPENDING','ERROR','STATE_UPDATED'));
\ No newline at end of file
diff --git
a/data-index/data-index-common/src/main/java/org/kie/kogito/index/api/KogitoRuntimeClient.java
b/data-index/data-index-common/src/main/java/org/kie/kogito/index/api/KogitoRuntimeClient.java
index f36312099..f25a95838 100644
---
a/data-index/data-index-common/src/main/java/org/kie/kogito/index/api/KogitoRuntimeClient.java
+++
b/data-index/data-index-common/src/main/java/org/kie/kogito/index/api/KogitoRuntimeClient.java
@@ -18,6 +18,7 @@
*/
package org.kie.kogito.index.api;
+import java.time.ZonedDateTime;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
@@ -79,4 +80,8 @@ public interface KogitoRuntimeClient {
List<String> groups, String attachmentId);
CompletableFuture<List<Timer>> getProcessInstanceTimers(String serviceUrl,
ProcessInstance processInstance);
+
+ CompletableFuture<String> rescheduleNodeInstanceSla(String serviceURL,
ProcessInstance processInstance, String nodeInstanceId, ZonedDateTime
expirationTime);
+
+ CompletableFuture<String> rescheduleProcessInstanceSla(String serviceURL,
ProcessInstance processInstance, ZonedDateTime expirationTime);
}
diff --git
a/data-index/data-index-graphql/src/main/java/org/kie/kogito/index/graphql/AbstractGraphQLSchemaManager.java
b/data-index/data-index-graphql/src/main/java/org/kie/kogito/index/graphql/AbstractGraphQLSchemaManager.java
index b852b322e..5447ab93e 100644
---
a/data-index/data-index-graphql/src/main/java/org/kie/kogito/index/graphql/AbstractGraphQLSchemaManager.java
+++
b/data-index/data-index-graphql/src/main/java/org/kie/kogito/index/graphql/AbstractGraphQLSchemaManager.java
@@ -463,6 +463,31 @@ public abstract class AbstractGraphQLSchemaManager
implements GraphQLSchemaManag
return CompletableFuture.failedFuture(new
DataIndexServiceException(format(UNABLE_TO_FIND_ERROR_MSG, ID, id)));
}
+ public CompletableFuture<String>
rescheduleNodeInstanceSla(DataFetchingEnvironment env) {
+ String id = env.getArgument("processInstanceId");
+ ProcessInstance processInstance =
getCacheService().getProcessInstanceStorage().get(id);
+ if (processInstance != null) {
+ return getDataIndexApiExecutor().rescheduleNodeInstanceSla(
+ getServiceUrl(processInstance.getEndpoint(),
processInstance.getProcessId()),
+ processInstance,
+ env.getArgument("nodeInstanceId"),
+ env.getArgument("expirationTime"));
+ }
+ return CompletableFuture.failedFuture(new
DataIndexServiceException(format(UNABLE_TO_FIND_ERROR_MSG, ID, id)));
+ }
+
+ public CompletableFuture<String>
rescheduleProcessInstanceSla(DataFetchingEnvironment env) {
+ String id = env.getArgument("id");
+ ProcessInstance processInstance =
getCacheService().getProcessInstanceStorage().get(id);
+ if (processInstance != null) {
+ return getDataIndexApiExecutor().rescheduleProcessInstanceSla(
+ getServiceUrl(processInstance.getEndpoint(),
processInstance.getProcessId()),
+ processInstance,
+ env.getArgument("expirationTime"));
+ }
+ return CompletableFuture.failedFuture(new
DataIndexServiceException(format(UNABLE_TO_FIND_ERROR_MSG, ID, id)));
+ }
+
protected CompletableFuture<String>
getUserTaskInstanceSchema(DataFetchingEnvironment env) {
UserTaskInstance userTaskInstance = env.getSource();
return
getDataIndexApiExecutor().getUserTaskSchema(getServiceUrl(userTaskInstance.getEndpoint(),
userTaskInstance.getProcessId()),
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 8f16ddab5..6df6e6700 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
@@ -19,6 +19,8 @@ type Mutation {
ProcessInstanceRetry(id: String): String
ProcessInstanceSkip(id: String): String
ProcessInstanceUpdateVariables(id: String, variables: String): String
+ ProcessInstanceRescheduleSlaTimer(id: String!, expirationTime: DateTime!):
String
+ NodeInstanceRescheduleSlaTimer(processInstanceId: String!, nodeInstanceId:
String!, expirationTime: DateTime!): String
NodeInstanceTrigger(id: String, nodeId: String): String
NodeInstanceRetrigger(id: String, nodeInstanceId: String): String
NodeInstanceCancel(id: String, nodeInstanceId: String): String
diff --git
a/data-index/data-index-service/data-index-service-common/src/main/java/org/kie/kogito/index/service/api/KogitoRuntimeClientImpl.java
b/data-index/data-index-service/data-index-service-common/src/main/java/org/kie/kogito/index/service/api/KogitoRuntimeClientImpl.java
index 85b5b3805..cf6411d29 100644
---
a/data-index/data-index-service/data-index-service-common/src/main/java/org/kie/kogito/index/service/api/KogitoRuntimeClientImpl.java
+++
b/data-index/data-index-service/data-index-service-common/src/main/java/org/kie/kogito/index/service/api/KogitoRuntimeClientImpl.java
@@ -18,6 +18,7 @@
*/
package org.kie.kogito.index.service.api;
+import java.time.ZonedDateTime;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
@@ -62,6 +63,8 @@ class KogitoRuntimeClientImpl extends
KogitoRuntimeCommonClient implements Kogit
public static final String TRIGGER_NODE_INSTANCE_PATH =
"/management/processes/%s/instances/%s/nodes/%s"; //node def
public static final String RETRIGGER_NODE_INSTANCE_PATH =
"/management/processes/%s/instances/%s/nodeInstances/%s"; // nodeInstance Id
public static final String CANCEL_NODE_INSTANCE_PATH =
"/management/processes/%s/instances/%s/nodeInstances/%s"; // nodeInstance Id
+ public static final String UPDATE_NODE_INSTANCE_SLA_PATH =
"/management/processes/%s/instances/%s/nodeInstances/%s/sla";
+ public static final String UPDATE_PROCESS_INSTANCE_SLA_PATH =
"/management/processes/%s/instances/%s/sla";
public static final String GET_TASK_SCHEMA_PATH = "/%s/%s/%s/%s/schema";
public static final String UPDATE_USER_TASK_INSTANCE_PATH =
"/management/usertasks/%s";
@@ -112,6 +115,18 @@ class KogitoRuntimeClientImpl extends
KogitoRuntimeCommonClient implements Kogit
return sendJSONPutClientRequest(getWebClient(serviceURL), requestURI,
"UPDATE VARIABLES of ProcessInstance with id: " + processInstance.getId(),
variables);
}
+ @Override
+ public CompletableFuture<String> rescheduleNodeInstanceSla(String
serviceURL, ProcessInstance processInstance, String nodeInstanceId,
ZonedDateTime expirationTime) {
+ String requestURI = format(UPDATE_NODE_INSTANCE_SLA_PATH,
processInstance.getProcessId(), processInstance.getId(), nodeInstanceId);
+ return sendPatchClientRequest(getWebClient(serviceURL), requestURI,
"Update SLA of NodesInstance with id: " + nodeInstanceId, new
JsonObject(expirationTime.toString()));
+ }
+
+ @Override
+ public CompletableFuture<String> rescheduleProcessInstanceSla(String
serviceURL, ProcessInstance processInstance, ZonedDateTime expirationTime) {
+ String requestURI = format(UPDATE_PROCESS_INSTANCE_SLA_PATH,
processInstance.getProcessId(), processInstance.getId());
+ return sendPatchClientRequest(getWebClient(serviceURL), requestURI,
"Update SLA of ProcessInstance with id: " + processInstance.getId(), new
JsonObject(expirationTime.toString()));
+ }
+
@Override
public CompletableFuture<String> getProcessInstanceDiagram(String
serviceURL, ProcessInstance processInstance) {
String requestURI = format(GET_PROCESS_INSTANCE_DIAGRAM_PATH,
processInstance.getProcessId(), processInstance.getId());
diff --git
a/data-index/data-index-service/data-index-service-common/src/main/java/org/kie/kogito/index/service/graphql/GraphQLSchemaManagerImpl.java
b/data-index/data-index-service/data-index-service-common/src/main/java/org/kie/kogito/index/service/graphql/GraphQLSchemaManagerImpl.java
index ca624dbaa..723defd48 100644
---
a/data-index/data-index-service/data-index-service-common/src/main/java/org/kie/kogito/index/service/graphql/GraphQLSchemaManagerImpl.java
+++
b/data-index/data-index-service/data-index-service-common/src/main/java/org/kie/kogito/index/service/graphql/GraphQLSchemaManagerImpl.java
@@ -98,6 +98,8 @@ public class GraphQLSchemaManagerImpl extends
AbstractGraphQLSchemaManager {
builder.dataFetcher("NodeInstanceCancel",
this::cancelNodeInstance);
builder.dataFetcher("JobCancel", this::cancelJob);
builder.dataFetcher("JobReschedule", this::rescheduleJob);
+ builder.dataFetcher("NodeInstanceRescheduleSlaTimer",
this::rescheduleNodeInstanceSla);
+ builder.dataFetcher("ProcessInstanceRescheduleSlaTimer",
this::rescheduleProcessInstanceSla);
builder.dataFetcher("UserTaskInstanceUpdate",
this::updateUserTaskInstance);
builder.dataFetcher("UserTaskInstanceCommentCreate",
this::createTaskInstanceComment);
builder.dataFetcher("UserTaskInstanceAttachmentCreate",
this::createTaskInstanceAttachment);
diff --git
a/data-index/kogito-addons-quarkus-data-index-persistence/kogito-addons-quarkus-data-index-persistence-common/runtime/src/main/java/org/kie/kogito/index/addon/api/KogitoAddonRuntimeClientImpl.java
b/data-index/kogito-addons-quarkus-data-index-persistence/kogito-addons-quarkus-data-index-persistence-common/runtime/src/main/java/org/kie/kogito/index/addon/api/KogitoAddonRuntimeClientImpl.java
index b9ea89d24..dea94ecff 100644
---
a/data-index/kogito-addons-quarkus-data-index-persistence/kogito-addons-quarkus-data-index-persistence-common/runtime/src/main/java/org/kie/kogito/index/addon/api/KogitoAddonRuntimeClientImpl.java
+++
b/data-index/kogito-addons-quarkus-data-index-persistence/kogito-addons-quarkus-data-index-persistence-common/runtime/src/main/java/org/kie/kogito/index/addon/api/KogitoAddonRuntimeClientImpl.java
@@ -20,6 +20,7 @@ package org.kie.kogito.index.addon.api;
import java.io.IOException;
import java.io.UncheckedIOException;
+import java.time.ZonedDateTime;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.function.Function;
@@ -315,4 +316,20 @@ public class KogitoAddonRuntimeClientImpl extends
KogitoRuntimeCommonClient impl
pi.start();
return
CompletableFuture.completedFuture(fromValue(pi.variables().toMap()));
}
+
+ @Override
+ public CompletableFuture<String> rescheduleNodeInstanceSla(String
serviceURL, ProcessInstance processInstance, String nodeInstanceId,
ZonedDateTime expirationTime) {
+ return
CompletableFuture.completedFuture(executeOnProcessInstance(processInstance.getProcessId(),
processInstance.getId(), pInstance -> {
+ pInstance.updateNodeInstanceSla(nodeInstanceId, expirationTime);
+ return "Updated SLA of node instance " + nodeInstanceId;
+ }));
+ }
+
+ @Override
+ public CompletableFuture<String> rescheduleProcessInstanceSla(String
serviceURL, ProcessInstance processInstance, ZonedDateTime expirationTime) {
+ return
CompletableFuture.completedFuture(executeOnProcessInstance(processInstance.getProcessId(),
processInstance.getId(), pInstance -> {
+ pInstance.updateProcessInstanceSla(expirationTime);
+ return "Updated SLA of process instance " +
processInstance.getId();
+ }));
+ }
}
diff --git
a/data-index/kogito-addons-quarkus-data-index/kogito-addons-quarkus-data-index-common/runtime/src/main/java/org/kie/kogito/index/addon/graphql/GraphQLAddonSchemaManagerImpl.java
b/data-index/kogito-addons-quarkus-data-index/kogito-addons-quarkus-data-index-common/runtime/src/main/java/org/kie/kogito/index/addon/graphql/GraphQLAddonSchemaManagerImpl.java
index 7c15e7539..f6f10fdfe 100644
---
a/data-index/kogito-addons-quarkus-data-index/kogito-addons-quarkus-data-index-common/runtime/src/main/java/org/kie/kogito/index/addon/graphql/GraphQLAddonSchemaManagerImpl.java
+++
b/data-index/kogito-addons-quarkus-data-index/kogito-addons-quarkus-data-index-common/runtime/src/main/java/org/kie/kogito/index/addon/graphql/GraphQLAddonSchemaManagerImpl.java
@@ -57,6 +57,8 @@ public class GraphQLAddonSchemaManagerImpl extends
AbstractGraphQLSchemaManager
builder.dataFetcher("NodeInstanceCancel",
this::cancelNodeInstance);
builder.dataFetcher("JobCancel", this::cancelJob);
builder.dataFetcher("JobReschedule", this::rescheduleJob);
+ builder.dataFetcher("NodeInstanceRescheduleSlaTimer",
this::rescheduleNodeInstanceSla);
+ builder.dataFetcher("ProcessInstanceRescheduleSlaTimer",
this::rescheduleProcessInstanceSla);
loadAdditionalMutations(builder);
return builder;
})
diff --git
a/jobs-service/kogito-addons-jobs-service/kogito-addons-quarkus-jobs/src/main/java/org/kie/kogito/jobs/embedded/EmbeddedJobsService.java
b/jobs-service/kogito-addons-jobs-service/kogito-addons-quarkus-jobs/src/main/java/org/kie/kogito/jobs/embedded/EmbeddedJobsService.java
index 84754c6dc..d8cc49dfd 100644
---
a/jobs-service/kogito-addons-jobs-service/kogito-addons-quarkus-jobs/src/main/java/org/kie/kogito/jobs/embedded/EmbeddedJobsService.java
+++
b/jobs-service/kogito-addons-jobs-service/kogito-addons-quarkus-jobs/src/main/java/org/kie/kogito/jobs/embedded/EmbeddedJobsService.java
@@ -88,4 +88,10 @@ public class EmbeddedJobsService implements JobsService {
}
}
+ @Override
+ public String rescheduleJob(JobDescription description) {
+ cancelJob(description.id());
+ return scheduleJob(description);
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]