File tree Expand file tree Collapse file tree 2 files changed +17
-8
lines changed
core/src/main/java/io/serverlessworkflow/impl
test/src/test/java/io/serverlessworkflow/impl/test Expand file tree Collapse file tree 2 files changed +17
-8
lines changed Original file line number Diff line number Diff line change @@ -176,6 +176,10 @@ public boolean suspend() {
176
176
statusLock .lock ();
177
177
if (TaskExecutorHelper .isActive (status .get ())) {
178
178
suspended = new CompletableFuture <TaskContext >();
179
+ workflowContext .instance ().status (WorkflowStatus .SUSPENDED );
180
+ publishEvent (
181
+ workflowContext ,
182
+ l -> l .onWorkflowSuspended (new WorkflowSuspendedEvent (workflowContext )));
179
183
return true ;
180
184
} else {
181
185
return false ;
@@ -197,11 +201,11 @@ public boolean resume() {
197
201
publishEvent (
198
202
workflowContext ,
199
203
l -> l .onTaskResumed (new TaskResumedEvent (workflowContext , suspendedTask )));
200
- publishEvent (
201
- workflowContext , l -> l .onWorkflowResumed (new WorkflowResumedEvent (workflowContext )));
202
204
} else {
203
205
suspended = null ;
204
206
}
207
+ publishEvent (
208
+ workflowContext , l -> l .onWorkflowResumed (new WorkflowResumedEvent (workflowContext )));
205
209
return true ;
206
210
} else {
207
211
return false ;
@@ -216,12 +220,8 @@ public CompletableFuture<TaskContext> completedChecks(TaskContext t) {
216
220
statusLock .lock ();
217
221
if (suspended != null ) {
218
222
suspendedTask = t ;
219
- workflowContext .instance ().status (WorkflowStatus .SUSPENDED );
220
223
publishEvent (
221
224
workflowContext , l -> l .onTaskSuspended (new TaskSuspendedEvent (workflowContext , t )));
222
- publishEvent (
223
- workflowContext ,
224
- l -> l .onWorkflowSuspended (new WorkflowSuspendedEvent (workflowContext )));
225
225
return suspended ;
226
226
}
227
227
if (cancelled != null ) {
Original file line number Diff line number Diff line change @@ -115,9 +115,18 @@ void testSuspendResumeNotWait()
115
115
.instance (Map .of ());
116
116
CompletableFuture <WorkflowModel > future = instance .start ();
117
117
instance .suspend ();
118
+ assertThat (instance .status ()).isEqualTo (WorkflowStatus .SUSPENDED );
118
119
instance .resume ();
119
120
assertThat (future .get (1 , TimeUnit .SECONDS ).asMap ().orElseThrow ())
120
121
.isEqualTo (Map .of ("name" , "Javierito" ));
122
+ assertThat (instance .status ()).isEqualTo (WorkflowStatus .COMPLETED );
123
+ WorkflowSuspendedCEData workflowSuspendedEvent =
124
+ assertPojoInCE (
125
+ "io.serverlessworkflow.workflow.suspended.v1" , WorkflowSuspendedCEData .class );
126
+ WorkflowResumedCEData workflowResumedEvent =
127
+ assertPojoInCE ("io.serverlessworkflow.workflow.resumed.v1" , WorkflowResumedCEData .class );
128
+ assertThat (workflowSuspendedEvent .suspendedAt ())
129
+ .isBeforeOrEqualTo (workflowResumedEvent .resumedAt ());
121
130
}
122
131
123
132
@ Test
@@ -127,10 +136,10 @@ void testSuspendResumeWait()
127
136
appl .workflowDefinition (WorkflowReader .readWorkflowFromClasspath ("wait-set.yaml" ))
128
137
.instance (Map .of ());
129
138
CompletableFuture <WorkflowModel > future = instance .start ();
130
- instance .suspend ();
131
139
assertThat (instance .status ()).isEqualTo (WorkflowStatus .WAITING );
132
- Thread . sleep ( 550 );
140
+ instance . suspend ( );
133
141
assertThat (instance .status ()).isEqualTo (WorkflowStatus .SUSPENDED );
142
+ Thread .sleep (550 );
134
143
instance .resume ();
135
144
assertThat (future .get (1 , TimeUnit .SECONDS ).asMap ().orElseThrow ())
136
145
.isEqualTo (Map .of ("name" , "Javierito" ));
You can’t perform that action at this time.
0 commit comments