Skip to content

Commit ae1d508

Browse files
authored
Merge pull request #117 from tsurdilo/sleepstateup
Delay/Sleep state updates
2 parents 70f66ec + ab65e91 commit ae1d508

File tree

23 files changed

+68
-68
lines changed

23 files changed

+68
-68
lines changed

api/src/main/java/io/serverlessworkflow/api/deserializers/StateDeserializer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@ public State deserialize(JsonParser jp,
8080
case SWITCH:
8181
return mapper.treeToValue(node,
8282
SwitchState.class);
83-
case DELAY:
83+
case SLEEP:
8484
return mapper.treeToValue(node,
85-
DelayState.class);
85+
SleepState.class);
8686
case PARALLEL:
8787
return mapper.treeToValue(node,
8888
ParallelState.class);

api/src/main/java/io/serverlessworkflow/api/mapper/WorkflowModule.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public WorkflowModule(WorkflowPropertySource workflowPropertySource) {
6363
private void addDefaultSerializers() {
6464
addSerializer(new WorkflowSerializer());
6565
addSerializer(new EventStateSerializer());
66-
addSerializer(new DelayStateSerializer());
66+
addSerializer(new SleepStateSerializer());
6767
addSerializer(new OperationStateSerializer());
6868
addSerializer(new ParallelStateSerializer());
6969
addSerializer(new SwitchStateSerializer());

api/src/main/java/io/serverlessworkflow/api/serializers/DelayStateSerializer.java renamed to api/src/main/java/io/serverlessworkflow/api/serializers/SleepStateSerializer.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -21,31 +21,31 @@
2121
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
2222
import com.fasterxml.jackson.databind.type.TypeFactory;
2323
import io.serverlessworkflow.api.states.DefaultState;
24-
import io.serverlessworkflow.api.states.DelayState;
24+
import io.serverlessworkflow.api.states.SleepState;
2525

2626
import java.io.IOException;
2727

28-
public class DelayStateSerializer extends StdSerializer<DelayState> {
28+
public class SleepStateSerializer extends StdSerializer<SleepState> {
2929

30-
public DelayStateSerializer() {
31-
this(DelayState.class);
30+
public SleepStateSerializer() {
31+
this(SleepState.class);
3232
}
3333

34-
protected DelayStateSerializer(Class<DelayState> t) {
34+
protected SleepStateSerializer(Class<SleepState> t) {
3535
super(t);
3636
}
3737

3838
@Override
39-
public void serialize(DelayState delayState,
39+
public void serialize(SleepState delayState,
4040
JsonGenerator gen,
4141
SerializerProvider provider) throws IOException {
4242

4343
// set defaults for delay state
44-
delayState.setType(DefaultState.Type.DELAY);
44+
delayState.setType(DefaultState.Type.SLEEP);
4545

4646
// serialize after setting default bean values...
4747
BeanSerializerFactory.instance.createSerializer(provider,
48-
TypeFactory.defaultInstance().constructType(DelayState.class)).serialize(delayState,
48+
TypeFactory.defaultInstance().constructType(SleepState.class)).serialize(delayState,
4949
gen,
5050
provider);
5151
}

api/src/main/resources/schema/states/defaultstate.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"event",
2323
"operation",
2424
"switch",
25-
"delay",
25+
"sleep",
2626
"parallel",
2727
"subflow",
2828
"inject",
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"type": "object",
3-
"javaType": "io.serverlessworkflow.api.states.DelayState",
3+
"javaType": "io.serverlessworkflow.api.states.SleepState",
44
"javaInterfaces": [
55
"io.serverlessworkflow.api.interfaces.State"
66
],
@@ -9,9 +9,9 @@
99
"$ref": "defaultstate.json"
1010
},
1111
"properties": {
12-
"timeDelay": {
12+
"duration": {
1313
"type": "string",
14-
"description": "Amount of time (ISO 8601 format) to delay"
14+
"description": "Duration (ISO 8601 duration format) to sleep"
1515
},
1616
"usedForCompensation": {
1717
"type": "boolean",
@@ -20,6 +20,6 @@
2020
}
2121
},
2222
"required": [
23-
"timeDelay"
23+
"duration"
2424
]
2525
}

api/src/main/resources/schema/workflow.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@
9292
"existingJavaType": "io.serverlessworkflow.api.interfaces.State",
9393
"anyOf": [
9494
{
95-
"title": "Delay State",
96-
"$ref": "states/delaystate.json"
95+
"title": "Sleep State",
96+
"$ref": "states/sleepstate.json"
9797
},
9898
{
9999
"title": "Event State",

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

+11-11
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@
2525
import io.serverlessworkflow.api.produce.ProduceEvent;
2626
import io.serverlessworkflow.api.schedule.Schedule;
2727
import io.serverlessworkflow.api.start.Start;
28-
import io.serverlessworkflow.api.states.DelayState;
28+
import io.serverlessworkflow.api.states.SleepState;
2929
import io.serverlessworkflow.api.workflow.Events;
3030
import io.serverlessworkflow.api.workflow.Functions;
3131
import org.junit.jupiter.api.Test;
3232

3333
import java.util.Arrays;
3434

35-
import static io.serverlessworkflow.api.states.DefaultState.Type.DELAY;
35+
import static io.serverlessworkflow.api.states.DefaultState.Type.SLEEP;
3636
import static org.junit.jupiter.api.Assertions.*;
3737

3838
public class WorkflowToMarkupTest {
@@ -44,22 +44,22 @@ public void testSingleState() {
4444
new Schedule().withInterval("PT1S")
4545
))
4646
.withStates(Arrays.asList(
47-
new DelayState().withName("delayState").withType(DELAY)
47+
new SleepState().withName("sleepState").withType(SLEEP)
4848
.withEnd(
4949
new End().withTerminate(true).withCompensate(true)
5050
.withProduceEvents(Arrays.asList(
5151
new ProduceEvent().withEventRef("someEvent")
5252
))
5353
)
54-
.withTimeDelay("PT1M")
54+
.withDuration("PT1M")
5555
)
5656
);
5757

5858
assertNotNull(workflow);
5959
assertNotNull(workflow.getStart());
6060
assertEquals(1, workflow.getStates().size());
6161
State state = workflow.getStates().get(0);
62-
assertTrue(state instanceof DelayState);
62+
assertTrue(state instanceof SleepState);
6363
assertNotNull(state.getEnd());
6464

6565
assertNotNull(Workflow.toJson(workflow));
@@ -78,19 +78,19 @@ public void testSingleFunction() {
7878
.withOperation("testSwaggerDef#testOperationId")))
7979
)
8080
.withStates(Arrays.asList(
81-
new DelayState().withName("delayState").withType(DELAY)
81+
new SleepState().withName("delayState").withType(SLEEP)
8282
.withEnd(
8383
new End()
8484
)
85-
.withTimeDelay("PT1M")
85+
.withDuration("PT1M")
8686
)
8787
);
8888

8989
assertNotNull(workflow);
9090
assertNotNull(workflow.getStart());
9191
assertEquals(1, workflow.getStates().size());
9292
State state = workflow.getStates().get(0);
93-
assertTrue(state instanceof DelayState);
93+
assertTrue(state instanceof SleepState);
9494
assertNotNull(workflow.getFunctions());
9595
assertEquals(1, workflow.getFunctions().getFunctionDefs().size());
9696
assertEquals("testFunction", workflow.getFunctions().getFunctionDefs().get(0).getName());
@@ -115,19 +115,19 @@ public void testSingleEvent() {
115115
.withOperation("testSwaggerDef#testOperationId")))
116116
)
117117
.withStates(Arrays.asList(
118-
new DelayState().withName("delayState").withType(DELAY)
118+
new SleepState().withName("delayState").withType(SLEEP)
119119
.withEnd(
120120
new End()
121121
)
122-
.withTimeDelay("PT1M")
122+
.withDuration("PT1M")
123123
)
124124
);
125125

126126
assertNotNull(workflow);
127127
assertNotNull(workflow.getStart());
128128
assertEquals(1, workflow.getStates().size());
129129
State state = workflow.getStates().get(0);
130-
assertTrue(state instanceof DelayState);
130+
assertTrue(state instanceof SleepState);
131131
assertNotNull(workflow.getFunctions());
132132
assertEquals(1, workflow.getFunctions().getFunctionDefs().size());
133133
assertEquals("testFunction", workflow.getFunctions().getFunctionDefs().get(0).getName());

api/src/test/resources/examples/booklending.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@
9595
"transition": "Wait two weeks"
9696
},
9797
{
98-
"name": "Wait two weeks",
99-
"type": "delay",
100-
"timeDelay": "P2W",
98+
"name": "Sleep two weeks",
99+
"type": "sleep",
100+
"duration": "P2W",
101101
"transition": "Get Book Status"
102102
},
103103
{

api/src/test/resources/examples/booklending.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ states:
5555
lender: "${ .lender }"
5656
transition: Wait two weeks
5757
- name: Wait two weeks
58-
type: delay
59-
timeDelay: P2W
58+
type: sleep
59+
duration: P2W
6060
transition: Get Book Status
6161
- name: Check Out Book
6262
type: operation

api/src/test/resources/examples/jobmonitoring.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@
6464
},
6565
{
6666
"name": "WaitForCompletion",
67-
"type": "delay",
68-
"timeDelay": "PT5S",
67+
"type": "sleep",
68+
"duration": "PT5S",
6969
"transition": "GetJobStatus"
7070
},
7171
{

api/src/test/resources/examples/jobmonitoring.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ states:
3636
- subFlowRef: handleJobSubmissionErrorWorkflow
3737
end: true
3838
- name: WaitForCompletion
39-
type: delay
40-
timeDelay: PT5S
39+
type: sleep
40+
duration: PT5S
4141
transition: GetJobStatus
4242
- name: GetJobStatus
4343
type: operation

diagram/src/main/java/io/serverlessworkflow/diagram/model/WorkflowDiagramModel.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -304,11 +304,11 @@ private void inspectStatesInfo(Workflow workflow) {
304304

305305
}
306306

307-
if (state instanceof DelayState) {
308-
DelayState delayState = (DelayState) state;
307+
if (state instanceof SleepState) {
308+
SleepState sleepState = (SleepState) state;
309309

310-
modelState.addInfo("Type: Delay State");
311-
modelState.addInfo("Delay: " + delayState.getTimeDelay());
310+
modelState.addInfo("Type: Sleep State");
311+
modelState.addInfo("Duration: " + sleepState.getDuration());
312312
}
313313

314314
if (state instanceof ParallelState) {

diagram/src/main/resources/templates/plantuml/workflow-template.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ skinparam state {
1313
BorderColor<< event >> #7fe5f0
1414
BorderColor<< operation >> #bada55
1515
BorderColor<< switch >> #92a0f2
16-
BorderColor<< delay >> #b83b5e
16+
BorderColor<< sleep >> #b83b5e
1717
BorderColor<< parallel >> #6a2c70
1818
BorderColor<< inject >> #1e5f74
1919
BorderColor<< foreach >> #931a25
@@ -38,7 +38,7 @@ state "[(${diagram.title})]" as workflow << workflow >> {
3838
[# th:if="${diagram.showLegend}" ]
3939
legend center
4040
State Types and Border Colors:
41-
| Event | Operation | Switch | Delay | Parallel | Inject | ForEach | CallBack |
41+
| Event | Operation | Switch | Sleep | Parallel | Inject | ForEach | CallBack |
4242
|<#7fe5f0>|<#bada55>|<#92a0f2>|<#b83b5e>|<#6a2c70>|<#1e5f74>|<#931a25>|<#ffcb8e>|
4343
endlegend
4444
[/]

diagram/src/test/resources/examples/booklending.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@
9696
},
9797
{
9898
"name": "Wait two weeks",
99-
"type": "delay",
100-
"timeDelay": "P2W",
99+
"type": "sleep",
100+
"duration": "P2W",
101101
"transition": "Get Book Status"
102102
},
103103
{

diagram/src/test/resources/examples/booklending.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ states:
5555
lender: "${ .lender }"
5656
transition: Wait two weeks
5757
- name: Wait two weeks
58-
type: delay
59-
timeDelay: P2W
58+
type: sleep
59+
duration: P2W
6060
transition: Get Book Status
6161
- name: Check Out Book
6262
type: operation

diagram/src/test/resources/examples/jobmonitoring.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@
6464
},
6565
{
6666
"name": "WaitForCompletion",
67-
"type": "delay",
68-
"timeDelay": "PT5S",
67+
"type": "sleep",
68+
"duration": "PT5S",
6969
"transition": "GetJobStatus"
7070
},
7171
{

diagram/src/test/resources/examples/jobmonitoring.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ states:
3636
- subFlowRef: handleJobSubmissionErrorWorkflow
3737
end: true
3838
- name: WaitForCompletion
39-
type: delay
40-
timeDelay: PT5S
39+
type: sleep
40+
duration: PT5S
4141
transition: GetJobStatus
4242
- name: GetJobStatus
4343
type: operation

diagram/src/test/resources/examples/singleswitchstate.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434
},
3535
{
3636
"name": "FromFirstCondition",
37-
"type": "delay",
38-
"timeDelay": "PT2M",
37+
"type": "sleep",
38+
"duration": "PT2M",
3939
"end": true
4040
},
4141
{

diagram/src/test/resources/examples/singleswitchstate.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ states:
2222
condition: ''
2323
end: true
2424
- name: FromFirstCondition
25-
type: delay
26-
timeDelay: PT2M
25+
type: sleep
26+
duration: PT2M
2727
end: true
2828
- name: FromSecondCondition
2929
type: inject

diagram/src/test/resources/examples/singleswitchstateeventconditions.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434
},
3535
{
3636
"name": "FromFirstCondition",
37-
"type": "delay",
38-
"timeDelay": "PT2M",
37+
"type": "sleep",
38+
"duration": "PT2M",
3939
"end": true
4040
},
4141
{

diagram/src/test/resources/examples/singleswitchstateeventconditions.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ states:
2222
eventRef: fourthEvent
2323
end: true
2424
- name: FromFirstCondition
25-
type: delay
26-
timeDelay: PT2M
25+
type: sleep
26+
duration: PT2M
2727
end: true
2828
- name: FromSecondCondition
2929
type: inject

validation/src/main/java/io/serverlessworkflow/validation/WorkflowValidatorImpl.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -298,10 +298,10 @@ public List<ValidationError> validate() {
298298
}
299299
}
300300

301-
if (s instanceof DelayState) {
302-
DelayState delayState = (DelayState) s;
303-
if (delayState.getTimeDelay() == null || delayState.getTimeDelay().length() < 1) {
304-
addValidationError("Delay state should have a non-empty time delay",
301+
if (s instanceof SleepState) {
302+
SleepState sleepState = (SleepState) s;
303+
if (sleepState.getDuration() == null || sleepState.getDuration().length() < 1) {
304+
addValidationError("Sleep state should have a non-empty time delay",
305305
ValidationError.WORKFLOW_VALIDATION);
306306
}
307307
}

0 commit comments

Comments
 (0)