Skip to content

Commit 582dc4e

Browse files
committed
add forked wf id as param and remove restart
1 parent 65dbe37 commit 582dc4e

3 files changed

Lines changed: 25 additions & 49 deletions

File tree

src/main/java/dev/dbos/transact/DBOS.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -371,38 +371,42 @@ public void cancelWorkflow(String workflowId) {
371371
* step are copied over
372372
*
373373
* @param workflowId Original workflow Id
374+
* @param forkedWorkflowId Id of the new workflow
374375
* @param startStep Start execution from this step. Prior steps copied over
375376
* @param applicationVersion The version of the application to run
376377
* @return handle to the workflow
377378
*/
378-
public WorkflowHandle<?> forkWorkflow(String workflowId, int startStep, String applicationVersion) {
379-
return this.dbosExecutor.forkWorkflow(workflowId, startStep, applicationVersion) ;
379+
public WorkflowHandle<?> forkWorkflow(String workflowId, String forkedWorkflowId, int startStep, String applicationVersion) {
380+
return this.dbosExecutor.forkWorkflow(workflowId, forkedWorkflowId, startStep, applicationVersion) ;
380381
}
381382

382383
/**
383-
*
384384
* Fork the workflow. Re-execute with another Id from the step provided. Steps prior to the provided
385385
* step are copied over
386386
*
387387
* @param workflowId Original workflow Id
388388
* @param startStep Start execution from this step. Prior steps copied over
389+
* @param applicationVersion The version of the application to run
389390
* @return handle to the workflow
390391
*/
391-
392-
public WorkflowHandle<?> forkWorkflow(String workflowId, int startStep) {
393-
return this.dbosExecutor.forkWorkflow(workflowId, startStep, null) ;
392+
public WorkflowHandle<?> forkWorkflow(String workflowId, int startStep, String applicationVersion) {
393+
return this.dbosExecutor.forkWorkflow(workflowId, null, startStep, applicationVersion) ;
394394
}
395395

396396
/**
397-
* Rerun this workflow from the start with another generated workflow Id
398397
*
399-
* @param workflowId Original workflow id
398+
* Fork the workflow. Re-execute with another Id from the step provided. Steps prior to the provided
399+
* step are copied over
400+
*
401+
* @param workflowId Original workflow Id
402+
* @param startStep Start execution from this step. Prior steps copied over
400403
* @return handle to the workflow
401404
*/
402405

403-
public WorkflowHandle<?> restartWorkflow(String workflowId) {
404-
return this.dbosExecutor.forkWorkflow(workflowId, 0, null) ;
406+
public WorkflowHandle<?> forkWorkflow(String workflowId, int startStep) {
407+
return this.dbosExecutor.forkWorkflow(workflowId, null, startStep, null) ;
405408
}
406409

410+
407411
}
408412

src/main/java/dev/dbos/transact/execution/DBOSExecutor.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -513,19 +513,22 @@ public void cancelWorkflow(String workflowId) {
513513

514514
}
515515

516-
public WorkflowHandle<?> forkWorkflow(String workflowId, int startStep, String applicationVersion) {
516+
public WorkflowHandle<?> forkWorkflow(String workflowId, String forkedWorkflowId, int startStep, String applicationVersion) {
517+
518+
if (forkedWorkflowId == null) {
519+
forkedWorkflowId = UUID.randomUUID().toString();
520+
}
521+
522+
final String newId = forkedWorkflowId ;
517523

518-
String newId = UUID.randomUUID().toString();
519524
Supplier<String> forkFunction = () -> {
520525
logger.info(String.format("Forking workflow:%s from step:%d ", workflowId, startStep));
521526

522527
return systemDatabase.forkWorkflow(workflowId, newId, startStep, applicationVersion);
523528
};
524529

525-
String forkedWorkflowId = systemDatabase.callFunctionAsStep(forkFunction, "DBOS.forkedWorkflow");
526-
527-
return retrieveWorkflow(forkedWorkflowId);
528-
530+
systemDatabase.callFunctionAsStep(forkFunction, "DBOS.forkedWorkflow");
531+
return retrieveWorkflow(newId);
529532
}
530533

531534
}

src/test/java/dev/dbos/transact/workflow/WorkflowMgmtTest.java

Lines changed: 2 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -250,44 +250,13 @@ public void syncCancelResumeTest() throws Exception {
250250

251251
}
252252

253-
@Test
254-
public void testRestart() {
255-
256-
ForkService forkService = dbos.<ForkService>Workflow()
257-
.interfaceClass(ForkService.class)
258-
.implementation(new ForkServiceImpl())
259-
.build();
260-
forkService.setForkService(forkService);
261-
262-
String workflowId = "wfid1" ;
263-
DBOSOptions options = new DBOSOptions.Builder(workflowId).build();
264-
String result ;
265-
try (SetDBOSOptions o = new SetDBOSOptions(options)) {
266-
result = forkService.simpleWorkflow("hello");
267-
}
268-
269-
assertEquals("hellohello", result);
270-
WorkflowHandle<?> handle = dbosExecutor.retrieveWorkflow(workflowId);
271-
assertEquals(WorkflowState.SUCCESS.name(), handle.getStatus().getStatus());
272-
273-
WorkflowHandle<?> rstatHandle = dbos.restartWorkflow(workflowId);
274-
result = (String) rstatHandle.getResult() ;
275-
assertEquals("hellohello", result);
276-
277-
assertEquals(WorkflowState.SUCCESS.name(), rstatHandle.getStatus().getStatus());
278-
assertTrue(rstatHandle.getWorkflowId() != workflowId);
279253

280-
List<StepInfo> steps = systemDatabase.listWorkflowSteps(rstatHandle.getWorkflowId()) ;
281-
assertEquals(5, steps.size()) ;
282-
283-
284-
}
285254

286255
@Test
287-
public void restartNonExistent() {
256+
public void forkNonExistent() {
288257

289258
try {
290-
WorkflowHandle<?> rstatHandle = dbos.restartWorkflow("12345");
259+
WorkflowHandle<?> rstatHandle = dbos.forkWorkflow("12345", 2);
291260
fail("An exceptions should have been thrown");
292261
} catch (Throwable t) {
293262
logger.info(t.getClass().getName()) ;

0 commit comments

Comments
 (0)