Skip to content

Commit fc0287c

Browse files
committed
[Fix apache/incubator-kie-issues#1857] Adding triggerCount
1 parent 37ca11b commit fc0287c

File tree

11 files changed

+137
-35
lines changed

11 files changed

+137
-35
lines changed

data-index/data-index-graphql/src/main/resources/basic.schema.graphqls

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ type ProcessInstance {
106106

107107
type ProcessInstanceError {
108108
nodeDefinitionId: String!
109+
nodeInstanceId: String
109110
message: String
110111
}
111112

@@ -142,6 +143,8 @@ type NodeInstance {
142143
definitionId: String!
143144
nodeId: String!
144145
slaDueDate: DateTime
146+
triggerCount: Int
147+
errorMessage: String
145148
}
146149

147150
enum MilestoneStatus {

data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/NodeInstance.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,26 @@ public class NodeInstance {
4040

4141
private ZonedDateTime slaDueDate;
4242

43+
private int triggerCount;
44+
45+
private String errorMessage;
46+
47+
public int getTriggerCount() {
48+
return triggerCount;
49+
}
50+
51+
public void setTriggerCount(int triggerCount) {
52+
this.triggerCount = triggerCount;
53+
}
54+
55+
public String getErrorMessage() {
56+
return errorMessage;
57+
}
58+
59+
public void setErrorMessage(String errorMessage) {
60+
this.errorMessage = errorMessage;
61+
}
62+
4363
@JsonProperty("nodeDefinitionId")
4464
private String definitionId;
4565

data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/model/ProcessInstanceError.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
public class ProcessInstanceError {
2626

2727
private String nodeDefinitionId;
28+
private String nodeInstanceId;
2829
@JsonProperty("errorMessage")
2930
private String message;
3031

@@ -77,4 +78,12 @@ public boolean equals(Object o) {
7778
public int hashCode() {
7879
return Objects.hash(nodeDefinitionId, message);
7980
}
81+
82+
public String getNodeInstanceId() {
83+
return nodeInstanceId;
84+
}
85+
86+
public void setNodeInstanceId(String nodeInstanceId) {
87+
this.nodeInstanceId = nodeInstanceId;
88+
}
8089
}

data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceErrorDataEventMerger.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import org.kie.kogito.event.process.ProcessInstanceDataEvent;
2222
import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent;
23+
import org.kie.kogito.event.process.ProcessInstanceErrorEventBody;
2324
import org.kie.kogito.index.CommonUtils;
2425
import org.kie.kogito.index.model.ProcessInstance;
2526
import org.kie.kogito.index.model.ProcessInstanceError;
@@ -30,14 +31,17 @@
3031
public class ProcessInstanceErrorDataEventMerger extends ProcessInstanceEventMerger {
3132

3233
@Override
33-
public ProcessInstance merge(ProcessInstance pi, ProcessInstanceDataEvent<?> data) {
34-
ProcessInstanceErrorDataEvent event = (ProcessInstanceErrorDataEvent) data;
35-
pi = getOrNew(pi, data, event.getData().getEventDate());
34+
public ProcessInstance merge(ProcessInstance pi, ProcessInstanceDataEvent<?> dataEvent) {
35+
ProcessInstanceErrorDataEvent event = (ProcessInstanceErrorDataEvent) dataEvent;
36+
ProcessInstanceErrorEventBody data = event.getData();
37+
pi = getOrNew(pi, dataEvent, data.getEventDate());
3638
ProcessInstanceError error = new ProcessInstanceError();
37-
error.setMessage(event.getData().getErrorMessage());
38-
error.setNodeDefinitionId(event.getData().getNodeDefinitionId());
39+
error.setMessage(data.getErrorMessage());
40+
error.setNodeDefinitionId(data.getNodeDefinitionId());
41+
error.setNodeInstanceId(data.getNodeInstanceId());
3942
pi.setError(error);
4043
pi.setState(CommonUtils.ERROR_STATE);
44+
pi.getNodes().stream().filter(n -> n.getId().equals(error.getNodeInstanceId())).findAny().ifPresent(n -> n.setErrorMessage(data.getErrorMessage()));
4145
return pi;
4246
}
4347

data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceNodeDataEventMerger.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public ProcessInstance merge(ProcessInstance pi, ProcessInstanceDataEvent<?> dat
6464
nodeInstance.setName(body.getNodeName());
6565
nodeInstance.setType(body.getNodeType());
6666
nodeInstance.setSlaDueDate(toZonedDateTime(body.getSlaDueDate()));
67+
nodeInstance.setTriggerCount(body.triggerCount());
6768
ZonedDateTime eventDate = toZonedDateTime(body.getEventDate());
6869
switch (body.getEventType()) {
6970
case EVENT_TYPE_ENTER:

data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/NodeInstanceEntity.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,30 @@ public class NodeInstanceEntity extends AbstractEntity {
4545
private ZonedDateTime exit;
4646
private ZonedDateTime slaDueDate;
4747
private String definitionId;
48+
private int triggerCount;
49+
private String errorMessage;
50+
4851
@ManyToOne(cascade = CascadeType.ALL, optional = false)
4952
@OnDelete(action = OnDeleteAction.CASCADE)
5053
@JoinColumn(name = "processInstanceId", foreignKey = @ForeignKey(name = "fk_nodes_process"))
5154
private ProcessInstanceEntity processInstance;
5255

56+
public int getTriggerCount() {
57+
return triggerCount;
58+
}
59+
60+
public void setTriggerCount(int triggerCount) {
61+
this.triggerCount = triggerCount;
62+
}
63+
64+
public String getErrorMessage() {
65+
return errorMessage;
66+
}
67+
68+
public void setErrorMessage(String errorMessage) {
69+
this.errorMessage = errorMessage;
70+
}
71+
5372
@Override
5473
public String getId() {
5574
return id;

data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/model/ProcessInstanceErrorEntity.java

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
public class ProcessInstanceErrorEntity {
2727

2828
private String nodeDefinitionId;
29+
private String nodeInstanceId;
2930
private String message;
3031

3132
public String getNodeDefinitionId() {
@@ -44,22 +45,28 @@ public void setMessage(String message) {
4445
this.message = message;
4546
}
4647

47-
@Override
48-
public boolean equals(Object o) {
49-
if (this == o) {
50-
return true;
51-
}
52-
if (o == null || getClass() != o.getClass()) {
53-
return false;
54-
}
55-
ProcessInstanceErrorEntity that = (ProcessInstanceErrorEntity) o;
56-
return Objects.equals(nodeDefinitionId, that.nodeDefinitionId) &&
57-
Objects.equals(message, that.message);
48+
public void setNodeInstanceId(String nodeInstanceId) {
49+
this.nodeInstanceId = nodeInstanceId;
50+
}
51+
52+
public String getNodeInstanceId() {
53+
return nodeInstanceId;
5854
}
5955

6056
@Override
6157
public int hashCode() {
62-
return Objects.hash(nodeDefinitionId, message);
58+
return Objects.hash(message, nodeDefinitionId, nodeInstanceId);
59+
}
60+
61+
@Override
62+
public boolean equals(Object obj) {
63+
if (this == obj)
64+
return true;
65+
if (!(obj instanceof ProcessInstanceErrorEntity))
66+
return false;
67+
ProcessInstanceErrorEntity other = (ProcessInstanceErrorEntity) obj;
68+
return Objects.equals(message, other.message) && Objects.equals(nodeDefinitionId, other.nodeDefinitionId)
69+
&& Objects.equals(nodeInstanceId, other.nodeInstanceId);
6370
}
6471

6572
}

data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessInstanceEntityStorage.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,9 @@ private void indexError(ProcessInstanceEntity pi, ProcessInstanceErrorEventBody
147147
}
148148
errorEntity.setMessage(error.getErrorMessage());
149149
errorEntity.setNodeDefinitionId(error.getNodeDefinitionId());
150+
errorEntity.setNodeInstanceId(error.getNodeInstanceId());
150151
pi.setState(CommonUtils.ERROR_STATE);
152+
pi.getNodes().stream().filter(n -> n.getId().equals(error.getNodeInstanceId())).findAny().ifPresent(n -> n.setErrorMessage(error.getErrorMessage()));
151153
}
152154

153155
private void indexNode(ProcessInstanceEntity pi, ProcessInstanceNodeEventBody data) {
@@ -186,6 +188,7 @@ private NodeInstanceEntity updateNode(NodeInstanceEntity nodeInstance, ProcessIn
186188
nodeInstance.setName(body.getNodeName());
187189
nodeInstance.setType(body.getNodeType());
188190
nodeInstance.setSlaDueDate(toZonedDateTime(body.getSlaDueDate()));
191+
nodeInstance.setTriggerCount(body.triggerCount());
189192
ZonedDateTime eventDate = toZonedDateTime(body.getEventDate());
190193
switch (body.getEventType()) {
191194
case EVENT_TYPE_ENTER:

data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessInstanceEntity.java

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,10 @@ public static class NodeInstanceEntity {
283283

284284
Long slaDueDate;
285285

286+
private int triggerCount;
287+
288+
private String errorMessage;
289+
286290
public String getId() {
287291
return id;
288292
}
@@ -363,6 +367,22 @@ public boolean equals(Object o) {
363367
public int hashCode() {
364368
return Objects.hash(id);
365369
}
370+
371+
public int getTriggerCount() {
372+
return triggerCount;
373+
}
374+
375+
public void setTriggerCount(int triggerCount) {
376+
this.triggerCount = triggerCount;
377+
}
378+
379+
public String getErrorMessage() {
380+
return errorMessage;
381+
}
382+
383+
public void setErrorMessage(String errorMessage) {
384+
this.errorMessage = errorMessage;
385+
}
366386
}
367387

368388
public static class ProcessInstanceErrorEntity {
@@ -371,6 +391,8 @@ public static class ProcessInstanceErrorEntity {
371391

372392
String message;
373393

394+
private String nodeInstanceId;
395+
374396
public String getNodeDefinitionId() {
375397
return nodeDefinitionId;
376398
}
@@ -387,22 +409,30 @@ public void setMessage(String message) {
387409
this.message = message;
388410
}
389411

390-
@Override
391-
public boolean equals(Object o) {
392-
if (this == o) {
393-
return true;
394-
}
395-
if (o == null || getClass() != o.getClass()) {
396-
return false;
397-
}
398-
ProcessInstanceErrorEntity that = (ProcessInstanceErrorEntity) o;
399-
return Objects.equals(nodeDefinitionId, that.nodeDefinitionId) &&
400-
Objects.equals(message, that.message);
412+
public String getNodeInstanceId() {
413+
return nodeInstanceId;
414+
}
415+
416+
public void setNodeInstanceId(String nodeInstanceId) {
417+
this.nodeInstanceId = nodeInstanceId;
401418
}
402419

403420
@Override
404421
public int hashCode() {
405-
return Objects.hash(nodeDefinitionId, message);
422+
return Objects.hash(message, nodeDefinitionId, nodeInstanceId);
423+
}
424+
425+
@Override
426+
public boolean equals(Object obj) {
427+
if (this == obj)
428+
return true;
429+
if (obj == null)
430+
return false;
431+
if (getClass() != obj.getClass())
432+
return false;
433+
ProcessInstanceErrorEntity other = (ProcessInstanceErrorEntity) obj;
434+
return Objects.equals(message, other.message) && Objects.equals(nodeDefinitionId, other.nodeDefinitionId)
435+
&& Objects.equals(nodeInstanceId, other.nodeInstanceId);
406436
}
407437
}
408438

data-index/data-index-storage/data-index-storage-mongodb/src/main/java/org/kie/kogito/index/mongodb/model/ProcessInstanceEntityMapper.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,8 @@ NodeInstance toNodeInstance(ProcessInstanceEntity.NodeInstanceEntity entity) {
149149
instance.setExit(instantToZonedDateTime(entity.getExit()));
150150
instance.setDefinitionId(entity.getDefinitionId());
151151
instance.setSlaDueDate(instantToZonedDateTime(entity.getSlaDueDate()));
152+
instance.setTriggerCount(instance.getTriggerCount());
153+
instance.setErrorMessage(entity.getErrorMessage());
152154
return instance;
153155
}
154156

@@ -166,6 +168,8 @@ ProcessInstanceEntity.NodeInstanceEntity fromNodeInstance(NodeInstance instance)
166168
entity.setExit(zonedDateTimeToInstant(instance.getExit()));
167169
entity.setDefinitionId(instance.getDefinitionId());
168170
entity.setSlaDueDate(zonedDateTimeToInstant(instance.getSlaDueDate()));
171+
entity.setTriggerCount(instance.getTriggerCount());
172+
entity.setErrorMessage(instance.getErrorMessage());
169173
return entity;
170174
}
171175

@@ -176,6 +180,7 @@ ProcessInstanceError toProcessInstanceError(ProcessInstanceEntity.ProcessInstanc
176180

177181
ProcessInstanceError error = new ProcessInstanceError();
178182
error.setNodeDefinitionId(entity.getNodeDefinitionId());
183+
error.setNodeInstanceId(entity.getNodeInstanceId());
179184
error.setMessage(entity.getMessage());
180185
return error;
181186
}
@@ -187,6 +192,7 @@ ProcessInstanceEntity.ProcessInstanceErrorEntity fromProcessInstanceError(Proces
187192

188193
ProcessInstanceEntity.ProcessInstanceErrorEntity entity = new ProcessInstanceEntity.ProcessInstanceErrorEntity();
189194
entity.setNodeDefinitionId(error.getNodeDefinitionId());
195+
entity.setNodeInstanceId(error.getNodeInstanceId());
190196
entity.setMessage(error.getMessage());
191197
return entity;
192198
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public CompletableFuture<String> abortProcessInstance(String serviceURL, Process
9393
pInstance.abort();
9494

9595
if (pInstance.status() == org.kie.kogito.process.ProcessInstance.STATE_ERROR) {
96-
throw new ProcessInstanceExecutionException(pInstance.id(), pInstance.error().get().failedNodeId(), pInstance.error().get().errorMessage());
96+
throw ProcessInstanceExecutionException.fromError(pInstance);
9797
} else {
9898
return String.format(SUCCESSFULLY_OPERATION_MESSAGE, "ABORT ProcessInstance with id: " + processInstance.getId());
9999
}
@@ -106,7 +106,7 @@ public CompletableFuture<String> retryProcessInstance(String serviceURL, Process
106106
pInstance.error().get().retrigger();
107107

108108
if (pInstance.status() == org.kie.kogito.process.ProcessInstance.STATE_ERROR) {
109-
throw new ProcessInstanceExecutionException(pInstance.id(), pInstance.error().get().failedNodeId(), pInstance.error().get().errorMessage());
109+
throw ProcessInstanceExecutionException.fromError(pInstance);
110110
} else {
111111
return String.format(SUCCESSFULLY_OPERATION_MESSAGE, "RETRY ProcessInstance in error with id: " + processInstance.getId());
112112
}
@@ -119,7 +119,7 @@ public CompletableFuture<String> skipProcessInstance(String serviceURL, ProcessI
119119
pInstance.error().get().skip();
120120

121121
if (pInstance.status() == org.kie.kogito.process.ProcessInstance.STATE_ERROR) {
122-
throw new ProcessInstanceExecutionException(pInstance.id(), pInstance.error().get().failedNodeId(), pInstance.error().get().errorMessage());
122+
throw ProcessInstanceExecutionException.fromError(pInstance);
123123
} else {
124124
return String.format(SUCCESSFULLY_OPERATION_MESSAGE, "SKIP ProcessInstance in error with id: " + processInstance.getId());
125125
}
@@ -185,7 +185,7 @@ public CompletableFuture<String> triggerNodeInstance(String serviceURL, ProcessI
185185
pInstance.triggerNode(nodeDefinitionId);
186186

187187
if (pInstance.status() == org.kie.kogito.process.ProcessInstance.STATE_ERROR) {
188-
throw new ProcessInstanceExecutionException(pInstance.id(), pInstance.error().get().failedNodeId(), pInstance.error().get().errorMessage());
188+
throw ProcessInstanceExecutionException.fromError(pInstance);
189189
} else {
190190
return String.format(SUCCESSFULLY_OPERATION_MESSAGE,
191191
"TRIGGER Node " + nodeDefinitionId + "from ProcessInstance with id: " + processInstance.getId());
@@ -199,7 +199,7 @@ public CompletableFuture<String> retriggerNodeInstance(String serviceURL, Proces
199199
pInstance.retriggerNodeInstance(nodeInstanceId);
200200

201201
if (pInstance.status() == org.kie.kogito.process.ProcessInstance.STATE_ERROR) {
202-
throw new ProcessInstanceExecutionException(pInstance.id(), pInstance.error().get().failedNodeId(), pInstance.error().get().errorMessage());
202+
throw ProcessInstanceExecutionException.fromError(pInstance);
203203
} else {
204204
return String.format(SUCCESSFULLY_OPERATION_MESSAGE,
205205
"RETRIGGER Node instance " + nodeInstanceId + "from ProcessInstance with id: " + processInstance.getId());
@@ -213,7 +213,7 @@ public CompletableFuture<String> cancelNodeInstance(String serviceURL, ProcessIn
213213
pInstance.cancelNodeInstance(nodeInstanceId);
214214

215215
if (pInstance.status() == org.kie.kogito.process.ProcessInstance.STATE_ERROR) {
216-
throw new ProcessInstanceExecutionException(pInstance.id(), pInstance.error().get().failedNodeId(), pInstance.error().get().errorMessage());
216+
throw ProcessInstanceExecutionException.fromError(pInstance);
217217
} else {
218218
return String.format(SUCCESSFULLY_OPERATION_MESSAGE,
219219
"CANCEL Node instance " + nodeInstanceId + "from ProcessInstance with id: " + processInstance.getId());

0 commit comments

Comments
 (0)