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 a777dabb5 [Fix apache/incubator-kie-issues#2143] Add function args 
(#2288)
a777dabb5 is described below

commit a777dabb52af249e34193da60b5d07730f814940
Author: Francisco Javier Tirado Sarti 
<[email protected]>
AuthorDate: Fri Jan 9 16:48:24 2026 +0100

    [Fix apache/incubator-kie-issues#2143] Add function args (#2288)
    
    Signed-off-by: fjtirado <[email protected]>
---
 .../AbstractProcessDataIndexPostgreSqlIT.java      |  2 +-
 .../java/org/kie/kogito/index/json/JsonUtils.java  |  3 ++-
 .../main/resources/graphql/basic.schema.graphqls   |  2 ++
 .../main/resources/graphql/json.schema.graphqls    |  5 ++++
 .../mutations/OutputGraphQLMutationProvider.java   |  7 +++++-
 .../org/kie/kogito/index/model/NodeInstance.java   | 20 +++++++++++++++
 .../kie/kogito/index/model/ProcessInstance.java    |  8 +++---
 .../merger/ProcessInstanceNodeDataEventMerger.java |  7 ++++++
 .../jpa/mapper/ProcessDefinitionEntityMapper.java  |  2 +-
 .../kogito/index/jpa/model/NodeInstanceEntity.java | 29 ++++++++++++++++++++++
 .../index/jpa/model/ProcessDefinitionEntity.java   |  8 +++---
 .../index/jpa/model/ProcessInstanceEntity.java     |  8 +++---
 .../jpa/storage/ProcessInstanceEntityStorage.java  |  7 ++++++
 .../postgresql/hibernate/JsonBinaryConverter.java  | 10 ++++----
 .../storage/AbstractProcessInstanceStorageIT.java  |  4 +--
 .../kie/kogito/index/jdbc/JsonBinaryConverter.java | 10 ++++----
 .../ansi/V1.47.0__add_input_output_args.sql        | 21 ++++++++++++++++
 .../index/mongodb/model/ProcessInstanceEntity.java | 20 +++++++++++++++
 .../mongodb/model/ProcessInstanceEntityMapper.java |  4 +++
 .../postgresql/V1.47.0__add_input_output_args.sql  | 21 ++++++++++++++++
 20 files changed, 170 insertions(+), 28 deletions(-)

diff --git 
a/apps-integration-tests/integration-tests-data-index-service/integration-tests-data-index-service-quarkus/src/test/java/org/kie/kogito/index/postgresql/AbstractProcessDataIndexPostgreSqlIT.java
 
b/apps-integration-tests/integration-tests-data-index-service/integration-tests-data-index-service-quarkus/src/test/java/org/kie/kogito/index/postgresql/AbstractProcessDataIndexPostgreSqlIT.java
index 003df6326..844edd663 100644
--- 
a/apps-integration-tests/integration-tests-data-index-service/integration-tests-data-index-service-quarkus/src/test/java/org/kie/kogito/index/postgresql/AbstractProcessDataIndexPostgreSqlIT.java
+++ 
b/apps-integration-tests/integration-tests-data-index-service/integration-tests-data-index-service-quarkus/src/test/java/org/kie/kogito/index/postgresql/AbstractProcessDataIndexPostgreSqlIT.java
@@ -56,7 +56,7 @@ public abstract class AbstractProcessDataIndexPostgreSqlIT 
extends AbstractProce
 
         await().atMost(TIMEOUT).untilAsserted(() -> 
given().spec(dataIndexSpec())
                 .contentType(ContentType.JSON)
-                .body("{ \"query\": \"{ ProcessInstances(where: { id: { equal: 
\\\"" + pId + "\\\" } }) { id variables state } }\" }")
+                .body("{ \"query\": \"{ ProcessInstances(where: { id: { equal: 
\\\"" + pId + "\\\" } }) { id variables state nodes {inputArgs outputArgs}} }\" 
}")
                 .when().post("/graphql")
                 .then().statusCode(200)
                 .body("data.ProcessInstances[0].id", containsString(pId))
diff --git 
a/data-index/data-index-common/src/main/java/org/kie/kogito/index/json/JsonUtils.java
 
b/data-index/data-index-common/src/main/java/org/kie/kogito/index/json/JsonUtils.java
index e8a7a6d30..5e66fed48 100644
--- 
a/data-index/data-index-common/src/main/java/org/kie/kogito/index/json/JsonUtils.java
+++ 
b/data-index/data-index-common/src/main/java/org/kie/kogito/index/json/JsonUtils.java
@@ -24,6 +24,7 @@ import org.kie.kogito.jackson.utils.ObjectMapperFactory;
 import org.kie.kogito.persistence.api.query.AttributeFilter;
 
 import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 
@@ -44,7 +45,7 @@ public final class JsonUtils {
         return 
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, 
false).registerModule(JsonFormat.getCloudEventJacksonModule()).findAndRegisterModules();
     }
 
-    public static ObjectNode mergeVariable(String variableName, Object 
variableValue, ObjectNode variables) {
+    public static ObjectNode mergeVariable(String variableName, Object 
variableValue, JsonNode variables) {
         return (ObjectNode) MergeUtils.merge(createObjectNode(variableName, 
variableValue), variables);
     }
 
diff --git 
a/data-index/data-index-graphql/src/main/resources/graphql/basic.schema.graphqls
 
b/data-index/data-index-graphql/src/main/resources/graphql/basic.schema.graphqls
index 438eab5d6..c2519d25c 100644
--- 
a/data-index/data-index-graphql/src/main/resources/graphql/basic.schema.graphqls
+++ 
b/data-index/data-index-graphql/src/main/resources/graphql/basic.schema.graphqls
@@ -160,6 +160,8 @@ type NodeInstance {
     retrigger: Boolean
     errorMessage: String
     cancelType: CancelType
+    inputArgs: JSON
+    outputArgs: JSON
 }
 
 enum CancelType {
diff --git 
a/data-index/data-index-graphql/src/main/resources/graphql/json.schema.graphqls 
b/data-index/data-index-graphql/src/main/resources/graphql/json.schema.graphqls
index ddd1d2d16..22b63e684 100644
--- 
a/data-index/data-index-graphql/src/main/resources/graphql/json.schema.graphqls
+++ 
b/data-index/data-index-graphql/src/main/resources/graphql/json.schema.graphqls
@@ -4,4 +4,9 @@ extend input ProcessInstanceArgument {
 
 extend input ProcessDefinitionArgument {
   metadata: JSON
+}
+
+extend input NodeInstanceArgument {
+  inputArgs: JSON
+  outputArgs: JSON
 }
\ No newline at end of file
diff --git 
a/data-index/data-index-mutations/data-index-shared-output-mutation/src/main/java/org/kie/kogito/index/mutations/OutputGraphQLMutationProvider.java
 
b/data-index/data-index-mutations/data-index-shared-output-mutation/src/main/java/org/kie/kogito/index/mutations/OutputGraphQLMutationProvider.java
index b4299853c..7ade88b26 100644
--- 
a/data-index/data-index-mutations/data-index-shared-output-mutation/src/main/java/org/kie/kogito/index/mutations/OutputGraphQLMutationProvider.java
+++ 
b/data-index/data-index-mutations/data-index-shared-output-mutation/src/main/java/org/kie/kogito/index/mutations/OutputGraphQLMutationProvider.java
@@ -36,6 +36,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 
 import graphql.schema.DataFetcher;
 import graphql.schema.DataFetchingEnvironment;
@@ -63,7 +64,11 @@ public class OutputGraphQLMutationProvider implements 
GraphQLMutationsProvider {
         if (completedInstanceId != null) {
             ProcessInstance processInstance = 
cacheService.getProcessInstanceStorage().get(completedInstanceId);
             if (processInstance != null) {
-                input = MergeUtils.merge(input, 
processInstance.getVariables().remove(env.getArgumentOrDefault("excludeProperties",
 Set.of("workflowdatainput"))));
+                JsonNode variables = processInstance.getVariables();
+                if (variables instanceof ObjectNode objectNode) {
+                    
objectNode.remove(env.getArgumentOrDefault("excludeProperties", 
Set.of("workflowdatainput")));
+                }
+                input = MergeUtils.merge(input, variables);
             } else {
                 logger.warn("Completed Instance Id {} cannot be found, using 
user input as it is", completedInstanceId);
             }
diff --git 
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/NodeInstance.java
 
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/NodeInstance.java
index 85b258573..086a12590 100644
--- 
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/NodeInstance.java
+++ 
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/NodeInstance.java
@@ -21,6 +21,7 @@ package org.kie.kogito.index.model;
 import java.time.ZonedDateTime;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.JsonNode;
 
 public class NodeInstance {
 
@@ -46,6 +47,9 @@ public class NodeInstance {
 
     private CancelType cancelType;
 
+    private JsonNode inputArgs;
+    private JsonNode outputArgs;
+
     public Boolean isRetrigger() {
         return retrigger;
     }
@@ -137,6 +141,22 @@ public class NodeInstance {
         this.cancelType = cancelType;
     }
 
+    public JsonNode getInputArgs() {
+        return inputArgs;
+    }
+
+    public void setInputArgs(JsonNode jsonNode) {
+        this.inputArgs = jsonNode;
+    }
+
+    public JsonNode getOutputArgs() {
+        return outputArgs;
+    }
+
+    public void setOutputArgs(JsonNode outputArgs) {
+        this.outputArgs = outputArgs;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) {
diff --git 
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/ProcessInstance.java
 
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/ProcessInstance.java
index 82618f0ed..374b57093 100644
--- 
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/ProcessInstance.java
+++ 
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/ProcessInstance.java
@@ -22,11 +22,11 @@ import java.util.List;
 import java.util.Set;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.databind.JsonNode;
 
 public class ProcessInstance extends ProcessInstanceMeta {
 
-    private ObjectNode variables;
+    private JsonNode variables;
     @JsonProperty("nodeInstances")
     private List<NodeInstance> nodes;
     private List<Milestone> milestones;
@@ -35,11 +35,11 @@ public class ProcessInstance extends ProcessInstanceMeta {
     private ProcessInstanceError error;
     private ProcessDefinition definition;
 
-    public ObjectNode getVariables() {
+    public JsonNode getVariables() {
         return variables;
     }
 
-    public void setVariables(ObjectNode variables) {
+    public void setVariables(JsonNode variables) {
         this.variables = variables;
     }
 
diff --git 
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceNodeDataEventMerger.java
 
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceNodeDataEventMerger.java
index 5ac329df7..f7c5987af 100644
--- 
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceNodeDataEventMerger.java
+++ 
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceNodeDataEventMerger.java
@@ -32,6 +32,7 @@ import org.kie.kogito.index.model.MilestoneStatus;
 import org.kie.kogito.index.model.Node;
 import org.kie.kogito.index.model.NodeInstance;
 import org.kie.kogito.index.model.ProcessInstance;
+import org.kie.kogito.jackson.utils.JsonObjectUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -67,6 +68,12 @@ public class ProcessInstanceNodeDataEventMerger extends 
ProcessInstanceEventMerg
         if (body.isRetrigger() != null) {
             nodeInstance.setRetrigger(body.isRetrigger());
         }
+        if (body.getInputParameters() != null) {
+            
nodeInstance.setInputArgs(JsonObjectUtils.fromValue(body.getInputParameters()));
+        }
+        if (body.getOutputParameters() != null) {
+            
nodeInstance.setOutputArgs(JsonObjectUtils.fromValue(body.getOutputParameters()));
+        }
         ZonedDateTime eventDate = toZonedDateTime(body.getEventDate());
         switch (body.getEventType()) {
             case EVENT_TYPE_ENTER:
diff --git 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/mapper/ProcessDefinitionEntityMapper.java
 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/mapper/ProcessDefinitionEntityMapper.java
index 780255afd..b252a09d3 100644
--- 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/mapper/ProcessDefinitionEntityMapper.java
+++ 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/mapper/ProcessDefinitionEntityMapper.java
@@ -55,7 +55,7 @@ public interface ProcessDefinitionEntityMapper {
         return entity == null || !entity.isObject() ? null : (ObjectNode) 
entity;
     }
 
-    default Map<String, Object> map(ObjectNode entity) {
+    default Map<String, Object> map(JsonNode entity) {
         return (Map<String, Object>) JsonObjectUtils.convertValue(entity, 
Map.class);
     }
 
diff --git 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/NodeInstanceEntity.java
 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/NodeInstanceEntity.java
index 5ba538fb6..f19011fc2 100644
--- 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/NodeInstanceEntity.java
+++ 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/NodeInstanceEntity.java
@@ -24,8 +24,13 @@ import java.util.Objects;
 import org.hibernate.annotations.OnDelete;
 import org.hibernate.annotations.OnDeleteAction;
 import org.kie.kogito.index.model.CancelType;
+import org.kie.kogito.persistence.postgresql.hibernate.JsonBinaryConverter;
+
+import com.fasterxml.jackson.databind.JsonNode;
 
 import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Convert;
 import jakarta.persistence.Entity;
 import jakarta.persistence.EnumType;
 import jakarta.persistence.Enumerated;
@@ -58,6 +63,14 @@ public class NodeInstanceEntity extends AbstractEntity {
     @JoinColumn(name = "processInstanceId", foreignKey = @ForeignKey(name = 
"fk_nodes_process"))
     private ProcessInstanceEntity processInstance;
 
+    @Convert(converter = JsonBinaryConverter.class)
+    @Column(columnDefinition = "jsonb")
+    private JsonNode inputArgs;
+
+    @Convert(converter = JsonBinaryConverter.class)
+    @Column(columnDefinition = "jsonb")
+    private JsonNode outputArgs;
+
     public Boolean isRetrigger() {
         return retrigger;
     }
@@ -155,6 +168,22 @@ public class NodeInstanceEntity extends AbstractEntity {
         this.processInstance = processInstance;
     }
 
+    public JsonNode getInputArgs() {
+        return inputArgs;
+    }
+
+    public void setInputArgs(JsonNode inputArgs) {
+        this.inputArgs = inputArgs;
+    }
+
+    public JsonNode getOutputArgs() {
+        return outputArgs;
+    }
+
+    public void setOutputArgs(JsonNode outputArgs) {
+        this.outputArgs = outputArgs;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) {
diff --git 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntity.java
 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntity.java
index 2b70331c1..6dda01443 100644
--- 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntity.java
+++ 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessDefinitionEntity.java
@@ -25,7 +25,7 @@ import java.util.Set;
 import org.kie.kogito.index.model.ProcessDefinitionKey;
 import org.kie.kogito.persistence.postgresql.hibernate.JsonBinaryConverter;
 
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.databind.JsonNode;
 
 import jakarta.persistence.CascadeType;
 import jakarta.persistence.CollectionTable;
@@ -78,7 +78,7 @@ public class ProcessDefinitionEntity extends AbstractEntity {
     private Set<String> annotations;
     @Convert(converter = JsonBinaryConverter.class)
     @Column(columnDefinition = "jsonb")
-    private ObjectNode metadata;
+    private JsonNode metadata;
 
     @Override
     public String getId() {
@@ -169,11 +169,11 @@ public class ProcessDefinitionEntity extends 
AbstractEntity {
         this.annotations = annotations;
     }
 
-    public ObjectNode getMetadata() {
+    public JsonNode getMetadata() {
         return metadata;
     }
 
-    public void setMetadata(ObjectNode metadata) {
+    public void setMetadata(JsonNode metadata) {
         this.metadata = metadata;
     }
 
diff --git 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessInstanceEntity.java
 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessInstanceEntity.java
index f6a05a608..ec60aaab6 100644
--- 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessInstanceEntity.java
+++ 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessInstanceEntity.java
@@ -25,7 +25,7 @@ import java.util.Set;
 
 import org.kie.kogito.persistence.postgresql.hibernate.JsonBinaryConverter;
 
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.databind.JsonNode;
 
 import jakarta.persistence.CascadeType;
 import jakarta.persistence.CollectionTable;
@@ -76,7 +76,7 @@ public class ProcessInstanceEntity extends AbstractEntity {
 
     @Convert(converter = JsonBinaryConverter.class)
     @Column(columnDefinition = "jsonb")
-    private ObjectNode variables;
+    private JsonNode variables;
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "processInstance")
     private List<NodeInstanceEntity> nodes;
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "processInstance")
@@ -225,11 +225,11 @@ public class ProcessInstanceEntity extends AbstractEntity 
{
         this.slaDueDate = slaDueDate;
     }
 
-    public ObjectNode getVariables() {
+    public JsonNode getVariables() {
         return variables;
     }
 
-    public void setVariables(ObjectNode variables) {
+    public void setVariables(JsonNode variables) {
         this.variables = variables;
     }
 
diff --git 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessInstanceEntityStorage.java
 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessInstanceEntityStorage.java
index 77b5947e5..c615e0e6e 100644
--- 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessInstanceEntityStorage.java
+++ 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessInstanceEntityStorage.java
@@ -50,6 +50,7 @@ import org.kie.kogito.index.model.CancelType;
 import org.kie.kogito.index.model.MilestoneStatus;
 import org.kie.kogito.index.model.ProcessInstance;
 import org.kie.kogito.index.storage.ProcessInstanceStorage;
+import org.kie.kogito.jackson.utils.JsonObjectUtils;
 import org.kie.kogito.persistence.api.StorageServiceCapability;
 import org.kie.kogito.persistence.api.StorageServiceCapabilityProvider;
 
@@ -217,6 +218,12 @@ public class ProcessInstanceEntityStorage extends 
AbstractJPAStorageFetcher<Stri
         if (body.isRetrigger() != null) {
             nodeInstance.setRetrigger(body.isRetrigger());
         }
+        if (body.getInputParameters() != null) {
+            
nodeInstance.setInputArgs(JsonObjectUtils.fromValue(body.getInputParameters()));
+        }
+        if (body.getOutputParameters() != null) {
+            
nodeInstance.setOutputArgs(JsonObjectUtils.fromValue(body.getOutputParameters()));
+        }
         ZonedDateTime eventDate = toZonedDateTime(body.getEventDate());
         switch (body.getEventType()) {
             case EVENT_TYPE_ABORTED:
diff --git 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/persistence/postgresql/hibernate/JsonBinaryConverter.java
 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/persistence/postgresql/hibernate/JsonBinaryConverter.java
index c82578e18..ae034415d 100644
--- 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/persistence/postgresql/hibernate/JsonBinaryConverter.java
+++ 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/persistence/postgresql/hibernate/JsonBinaryConverter.java
@@ -23,14 +23,14 @@ import java.io.UncheckedIOException;
 
 import org.kie.kogito.jackson.utils.ObjectMapperFactory;
 
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.databind.JsonNode;
 
 import jakarta.persistence.AttributeConverter;
 
-public class JsonBinaryConverter implements AttributeConverter<ObjectNode, 
String> {
+public class JsonBinaryConverter implements AttributeConverter<JsonNode, 
String> {
 
     @Override
-    public String convertToDatabaseColumn(ObjectNode attribute) {
+    public String convertToDatabaseColumn(JsonNode attribute) {
         try {
             return attribute == null ? null : 
ObjectMapperFactory.get().writeValueAsString(attribute);
         } catch (IOException e) {
@@ -39,9 +39,9 @@ public class JsonBinaryConverter implements 
AttributeConverter<ObjectNode, Strin
     }
 
     @Override
-    public ObjectNode convertToEntityAttribute(String dbData) {
+    public JsonNode convertToEntityAttribute(String dbData) {
         try {
-            return dbData == null ? null : 
ObjectMapperFactory.get().readValue(dbData, ObjectNode.class);
+            return dbData == null ? null : 
ObjectMapperFactory.get().readValue(dbData, JsonNode.class);
         } catch (IOException e) {
             throw new UncheckedIOException(e);
         }
diff --git 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractProcessInstanceStorageIT.java
 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractProcessInstanceStorageIT.java
index e5e4475c9..4f6cbb835 100644
--- 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractProcessInstanceStorageIT.java
+++ 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/test/java/org/kie/kogito/index/jpa/storage/AbstractProcessInstanceStorageIT.java
@@ -109,7 +109,7 @@ public abstract class AbstractProcessInstanceStorageIT {
                 .hasSize(1);
 
         Assertions.assertThat(processInstance.getNodes().get(0))
-                .hasNoNullFieldsOrPropertiesExcept("exit", "slaDueDate", 
"errorMessage", "retrigger", "cancelType")
+                .hasNoNullFieldsOrPropertiesExcept("exit", "slaDueDate", 
"errorMessage", "retrigger", "cancelType", "inputArgs", "outputArgs")
                 .hasFieldOrPropertyWithValue("name", "nodeName")
                 .hasFieldOrPropertyWithValue("type", "BoundaryEventNode")
                 .hasFieldOrPropertyWithValue("definitionId", nodeDefinitionId)
@@ -125,7 +125,7 @@ public abstract class AbstractProcessInstanceStorageIT {
                 .hasSize(1);
 
         Assertions.assertThat(processInstance.getNodes().get(0))
-                .hasNoNullFieldsOrPropertiesExcept("slaDueDate", 
"errorMessage", "retrigger", "cancelType")
+                .hasNoNullFieldsOrPropertiesExcept("slaDueDate", 
"errorMessage", "retrigger", "cancelType", "inputArgs", "outputArgs")
                 .hasFieldOrPropertyWithValue("name", "nodeName")
                 .hasFieldOrPropertyWithValue("type", "BoundaryEventNode")
                 .hasFieldOrPropertyWithValue("definitionId", nodeDefinitionId)
diff --git 
a/data-index/data-index-storage/data-index-storage-jpa/src/main/java/org/kie/kogito/index/jdbc/JsonBinaryConverter.java
 
b/data-index/data-index-storage/data-index-storage-jpa/src/main/java/org/kie/kogito/index/jdbc/JsonBinaryConverter.java
index 586f60ed1..bb7434a84 100644
--- 
a/data-index/data-index-storage/data-index-storage-jpa/src/main/java/org/kie/kogito/index/jdbc/JsonBinaryConverter.java
+++ 
b/data-index/data-index-storage/data-index-storage-jpa/src/main/java/org/kie/kogito/index/jdbc/JsonBinaryConverter.java
@@ -23,14 +23,14 @@ import java.io.UncheckedIOException;
 
 import org.kie.kogito.jackson.utils.ObjectMapperFactory;
 
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.databind.JsonNode;
 
 import jakarta.persistence.AttributeConverter;
 
-public class JsonBinaryConverter implements AttributeConverter<ObjectNode, 
byte[]> {
+public class JsonBinaryConverter implements AttributeConverter<JsonNode, 
byte[]> {
 
     @Override
-    public byte[] convertToDatabaseColumn(ObjectNode attribute) {
+    public byte[] convertToDatabaseColumn(JsonNode attribute) {
         try {
             return attribute == null ? null : 
ObjectMapperFactory.get().writeValueAsBytes(attribute);
         } catch (IOException e) {
@@ -39,9 +39,9 @@ public class JsonBinaryConverter implements 
AttributeConverter<ObjectNode, byte[
     }
 
     @Override
-    public ObjectNode convertToEntityAttribute(byte[] dbData) {
+    public JsonNode convertToEntityAttribute(byte[] dbData) {
         try {
-            return dbData == null ? null : 
ObjectMapperFactory.get().readValue(dbData, ObjectNode.class);
+            return dbData == null ? null : 
ObjectMapperFactory.get().readValue(dbData, JsonNode.class);
         } catch (IOException e) {
             throw new UncheckedIOException(e);
         }
diff --git 
a/data-index/data-index-storage/data-index-storage-jpa/src/main/resources/kie-flyway/db/data-index/ansi/V1.47.0__add_input_output_args.sql
 
b/data-index/data-index-storage/data-index-storage-jpa/src/main/resources/kie-flyway/db/data-index/ansi/V1.47.0__add_input_output_args.sql
new file mode 100644
index 000000000..742a1bed6
--- /dev/null
+++ 
b/data-index/data-index-storage/data-index-storage-jpa/src/main/resources/kie-flyway/db/data-index/ansi/V1.47.0__add_input_output_args.sql
@@ -0,0 +1,21 @@
+/*
+ * 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 nodes ADD COLUMN input_args varchar(max);
+ALTER TABLE nodes ADD COLUMN output_args varchar(max);
\ No newline at end of file
diff --git 
a/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessInstanceEntity.java
 
b/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessInstanceEntity.java
index dc00ab014..34763fe15 100644
--- 
a/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessInstanceEntity.java
+++ 
b/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessInstanceEntity.java
@@ -310,6 +310,10 @@ public class ProcessInstanceEntity {
 
         private String errorMessage;
 
+        private Document inputArgs;
+
+        private Document outputArgs;
+
         public String getId() {
             return id;
         }
@@ -382,6 +386,22 @@ public class ProcessInstanceEntity {
             this.cancelType = cancelType;
         }
 
+        public Document getInputArgs() {
+            return inputArgs;
+        }
+
+        public void setInputArgs(Document inputArgs) {
+            this.inputArgs = inputArgs;
+        }
+
+        public Document getOutputArgs() {
+            return outputArgs;
+        }
+
+        public void setOutputArgs(Document outputArgs) {
+            this.outputArgs = outputArgs;
+        }
+
         @Override
         public boolean equals(Object o) {
             if (this == o) {
diff --git 
a/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessInstanceEntityMapper.java
 
b/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessInstanceEntityMapper.java
index 46ca131a8..954b25602 100644
--- 
a/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessInstanceEntityMapper.java
+++ 
b/data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessInstanceEntityMapper.java
@@ -156,6 +156,8 @@ public class ProcessInstanceEntityMapper implements 
MongoEntityMapper<ProcessIns
         instance.setRetrigger(entity.isRetrigger());
         instance.setErrorMessage(entity.getErrorMessage());
         instance.setCancelType(entity.getCancelType());
+        instance.setInputArgs(documentToJsonNode(entity.getInputArgs()));
+        instance.setOutputArgs(documentToJsonNode(entity.getOutputArgs()));
         return instance;
     }
 
@@ -176,6 +178,8 @@ public class ProcessInstanceEntityMapper implements 
MongoEntityMapper<ProcessIns
         entity.setRetrigger(instance.isRetrigger());
         entity.setErrorMessage(instance.getErrorMessage());
         entity.setCancelType(instance.getCancelType());
+        entity.setInputArgs(jsonNodeToDocument(instance.getInputArgs()));
+        entity.setOutputArgs(jsonNodeToDocument(instance.getOutputArgs()));
         return entity;
     }
 
diff --git 
a/data-index/data-index-storage/data-index-storage-postgresql/src/main/resources/kie-flyway/db/data-index/postgresql/V1.47.0__add_input_output_args.sql
 
b/data-index/data-index-storage/data-index-storage-postgresql/src/main/resources/kie-flyway/db/data-index/postgresql/V1.47.0__add_input_output_args.sql
new file mode 100644
index 000000000..e7c7cdbab
--- /dev/null
+++ 
b/data-index/data-index-storage/data-index-storage-postgresql/src/main/resources/kie-flyway/db/data-index/postgresql/V1.47.0__add_input_output_args.sql
@@ -0,0 +1,21 @@
+/*
+ * 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 nodes ADD COLUMN input_args jsonb;
+ALTER TABLE nodes ADD COLUMN output_args jsonb;
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to