This is an automated email from the ASF dual-hosted git repository.
fjtiradosarti 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 7b7e2e44b [Fix apache/incubator-kie-issues#1892] Adding execution
summary (#2209)
7b7e2e44b is described below
commit 7b7e2e44b0038376651de85798bfca60ee90515c
Author: Francisco Javier Tirado Sarti
<[email protected]>
AuthorDate: Fri Apr 4 14:18:52 2025 +0200
[Fix apache/incubator-kie-issues#1892] Adding execution summary (#2209)
---
.../graphql/AbstractGraphQLSchemaManager.java | 40 ++++++++++++++++++++++
.../src/main/resources/basic.schema.graphqls | 1 +
.../service/graphql/GraphQLSchemaManagerImpl.java | 1 +
.../graphql/GraphQLAddonSchemaManagerImpl.java | 1 +
4 files changed, 43 insertions(+)
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 e0464aa32..804c5e49d 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
@@ -18,8 +18,10 @@
*/
package org.kie.kogito.index.graphql;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.ListIterator;
import java.util.Map;
import java.util.ServiceLoader;
import java.util.ServiceLoader.Provider;
@@ -34,12 +36,14 @@ import
org.kie.kogito.index.graphql.query.GraphQLQueryParser;
import org.kie.kogito.index.graphql.query.GraphQLQueryParserRegistry;
import org.kie.kogito.index.model.Job;
import org.kie.kogito.index.model.Node;
+import org.kie.kogito.index.model.NodeInstance;
import org.kie.kogito.index.model.ProcessDefinition;
import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.index.model.ProcessInstance;
import org.kie.kogito.index.model.UserTaskInstance;
import org.kie.kogito.index.service.DataIndexServiceException;
import org.kie.kogito.index.storage.DataIndexStorageService;
+import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
import org.kie.kogito.persistence.api.StorageFetcher;
import org.kie.kogito.persistence.api.StorageServiceCapability;
import org.kie.kogito.persistence.api.query.Query;
@@ -178,6 +182,42 @@ public abstract class AbstractGraphQLSchemaManager
implements GraphQLSchemaManag
return cacheService.getProcessDefinitionStorage().get(new
ProcessDefinitionKey(source.getProcessId(), source.getVersion()));
}
+ private static final String START_MESSAGE = "Workflow started at %s";
+ private static final String FAILED_MESSAGE = "Workflow failed with error
%s at %s";
+ private static final String RETRIGGERED_MESSAGE = "Workflow retriggered at
%s";
+ private static final String WAITING_MESSAGE = "Workflow waiting at node %s
since %s";
+ private static final String COMPLETED_MESSAGE = "Workflow completed at %s";
+
+ public List<String> getExecutionSummary(DataFetchingEnvironment env) {
+ ProcessInstance pi = env.getSource();
+ List<String> summary = new ArrayList<>();
+ List<NodeInstance> nodes = pi.getNodes();
+ nodes.sort((u, v) -> u.getEnter().compareTo(v.getEnter()));
+ ListIterator<NodeInstance> iter = nodes.listIterator();
+ summary.add(String.format(START_MESSAGE, pi.getStart()));
+ while (iter.hasNext()) {
+ NodeInstance item = iter.next();
+ if (Boolean.TRUE.equals(item.isRetrigger())) {
+ summary.add(String.format(RETRIGGERED_MESSAGE,
item.getEnter()));
+ }
+ if (item.getErrorMessage() != null) {
+ summary.add(String.format(FAILED_MESSAGE,
item.getErrorMessage(), item.getEnter()));
+ }
+ }
+ if (pi.getState() == KogitoProcessInstance.STATE_ACTIVE) {
+ while (iter.hasPrevious()) {
+ NodeInstance last = iter.previous();
+ if (last.getName() != null && last.getExit() == null) {
+ summary.add(String.format(WAITING_MESSAGE, last.getName(),
last.getEnter()));
+ }
+ break;
+ }
+ } else if (pi.getState() == KogitoProcessInstance.STATE_COMPLETED) {
+ summary.add(String.format(COMPLETED_MESSAGE, pi.getEnd()));
+ }
+ return summary;
+ }
+
protected String getServiceUrl(String endpoint, String processId) {
return CommonUtils.getServiceUrl(endpoint, processId);
}
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 7e568a493..814d5454a 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
@@ -101,6 +101,7 @@ type ProcessInstance {
identity: String
createdBy: String
updatedBy: String
+ executionSummary: [String]
slaDueDate: DateTime
}
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 03b63f8e7..4da59f5a0 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
@@ -122,6 +122,7 @@ public class GraphQLSchemaManagerImpl extends
AbstractGraphQLSchemaManager {
builder.dataFetcher("source",
this::getProcessInstanceSource);
builder.dataFetcher("nodeDefinitions",
this::getProcessInstanceNodes);
builder.dataFetcher("definition",
this::getProcessDefinition);
+ builder.dataFetcher("executionSummary",
this::getExecutionSummary);
return builder;
})
.type("UserTaskInstance", builder -> {
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 31c41815e..d12b09b7c 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
@@ -74,6 +74,7 @@ public class GraphQLAddonSchemaManagerImpl extends
AbstractGraphQLSchemaManager
builder.dataFetcher("source",
this::getProcessInstanceSource);
builder.dataFetcher("nodeDefinitions",
this::getProcessInstanceNodes);
builder.dataFetcher("definition",
this::getProcessDefinition);
+ builder.dataFetcher("executionSummary",
this::getExecutionSummary);
return builder;
})
.type("ProcessInstanceState", builder -> {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]