Skip to content

Commit f65e235

Browse files
committed
Add missing dataOnly prop to eventDef
Signed-off-by: Tihomir Surdilovic <[email protected]>
1 parent 2c49a87 commit f65e235

File tree

4 files changed

+142
-0
lines changed

4 files changed

+142
-0
lines changed

api/src/main/resources/schema/events/eventdef.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@
2424
"$ref": "../correlation/correlationdef.json"
2525
}
2626
},
27+
"dataOnly": {
28+
"type": "boolean",
29+
"default": true,
30+
"description": "If `true`, only the Event payload is accessible to consuming Workflow states. If `false`, both event payload and context attributes should be accessible "
31+
},
2732
"kind": {
2833
"type" : "string",
2934
"enum": ["consumed", "produced"],

api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import io.serverlessworkflow.api.datainputschema.DataInputSchema;
2626
import io.serverlessworkflow.api.defaultdef.DefaultConditionDefinition;
2727
import io.serverlessworkflow.api.end.End;
28+
import io.serverlessworkflow.api.events.EventDefinition;
2829
import io.serverlessworkflow.api.events.EventRef;
2930
import io.serverlessworkflow.api.functions.FunctionDefinition;
3031
import io.serverlessworkflow.api.functions.FunctionRef;
@@ -39,6 +40,7 @@
3940
import io.serverlessworkflow.api.test.utils.WorkflowTestUtils;
4041
import io.serverlessworkflow.api.timeouts.WorkflowExecTimeout;
4142
import io.serverlessworkflow.api.workflow.Constants;
43+
import io.serverlessworkflow.api.workflow.Events;
4244
import io.serverlessworkflow.api.workflow.Retries;
4345
import io.serverlessworkflow.api.workflow.Secrets;
4446
import java.util.List;
@@ -852,4 +854,25 @@ public void testAnnotations(String workflowLocation) {
852854
List<String> annotations = workflow.getAnnotations();
853855
assertEquals(4, annotations.size());
854856
}
857+
858+
@ParameterizedTest
859+
@ValueSource(strings = {"/features/eventdefdataonly.json", "/features/eventdefdataonly.yml"})
860+
public void testEventDefDataOnly(String workflowLocation) {
861+
Workflow workflow = Workflow.fromSource(WorkflowTestUtils.readWorkflowFile(workflowLocation));
862+
863+
assertNotNull(workflow);
864+
assertNotNull(workflow.getId());
865+
assertNotNull(workflow.getName());
866+
867+
assertNotNull(workflow.getEvents());
868+
Events events = workflow.getEvents();
869+
assertNotNull(workflow.getEvents().getEventDefs());
870+
assertEquals(2, events.getEventDefs().size());
871+
EventDefinition eventDefOne = events.getEventDefs().get(0);
872+
EventDefinition eventDefTwo = events.getEventDefs().get(1);
873+
assertEquals("visaApprovedEvent", eventDefOne.getName());
874+
assertFalse(eventDefOne.isDataOnly());
875+
assertEquals("visaRejectedEvent", eventDefTwo.getName());
876+
assertTrue(eventDefTwo.isDataOnly());
877+
}
855878
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
{
2+
"id": "eventdefdataonly",
3+
"version": "1.0",
4+
"specVersion": "0.8",
5+
"name": "Event Definition Data Only Test",
6+
"description": "Event Definition Data Only Test",
7+
"start": "CheckVisaStatus",
8+
"events": [
9+
{
10+
"name": "visaApprovedEvent",
11+
"type": "VisaApproved",
12+
"source": "visaCheckSource",
13+
"dataOnly": false
14+
},
15+
{
16+
"name": "visaRejectedEvent",
17+
"type": "VisaRejected",
18+
"source": "visaCheckSource"
19+
}
20+
],
21+
"states":[
22+
{
23+
"name":"CheckVisaStatus",
24+
"type":"switch",
25+
"eventConditions": [
26+
{
27+
"eventRef": "visaApprovedEvent",
28+
"transition": "HandleApprovedVisa"
29+
},
30+
{
31+
"eventRef": "visaRejectedEvent",
32+
"transition": "HandleRejectedVisa"
33+
}
34+
],
35+
"timeouts": {
36+
"eventTimeout": "PT1H"
37+
},
38+
"defaultCondition": {
39+
"transition": "HandleNoVisaDecision"
40+
}
41+
},
42+
{
43+
"name": "HandleApprovedVisa",
44+
"type": "operation",
45+
"actions": [
46+
{
47+
"subFlowRef": "handleApprovedVisaWorkflowID"
48+
}
49+
],
50+
"end": true
51+
},
52+
{
53+
"name": "HandleRejectedVisa",
54+
"type": "operation",
55+
"actions": [
56+
{
57+
"subFlowRef": "handleRejectedVisaWorkflowID"
58+
}
59+
],
60+
"end": true
61+
},
62+
{
63+
"name": "HandleNoVisaDecision",
64+
"type": "operation",
65+
"actions": [
66+
{
67+
"subFlowRef": "handleNoVisaDecisionWorkflowId"
68+
}
69+
],
70+
"end": true
71+
}
72+
]
73+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
id: eventdefdataonly
2+
version: '1.0'
3+
specVersion: '0.8'
4+
name: Event Definition Data Only Test
5+
description: Event Definition Data Only Test
6+
start: CheckVisaStatus
7+
events:
8+
- name: visaApprovedEvent
9+
type: VisaApproved
10+
source: visaCheckSource
11+
dataOnly: false
12+
- name: visaRejectedEvent
13+
type: VisaRejected
14+
source: visaCheckSource
15+
states:
16+
- name: CheckVisaStatus
17+
type: switch
18+
eventConditions:
19+
- eventRef: visaApprovedEvent
20+
transition: HandleApprovedVisa
21+
- eventRef: visaRejectedEvent
22+
transition: HandleRejectedVisa
23+
timeouts:
24+
eventTimeout: PT1H
25+
defaultCondition:
26+
transition: HandleNoVisaDecision
27+
- name: HandleApprovedVisa
28+
type: operation
29+
actions:
30+
- subFlowRef: handleApprovedVisaWorkflowID
31+
end: true
32+
- name: HandleRejectedVisa
33+
type: operation
34+
actions:
35+
- subFlowRef: handleRejectedVisaWorkflowID
36+
end: true
37+
- name: HandleNoVisaDecision
38+
type: operation
39+
actions:
40+
- subFlowRef: handleNoVisaDecisionWorkflowId
41+
end: true

0 commit comments

Comments
 (0)