Skip to content

Commit 3b09d59

Browse files
committed
update
1 parent 12e9e50 commit 3b09d59

5 files changed

Lines changed: 132 additions & 144 deletions

File tree

samples/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def grpcVersion = '1.59.0'
1010
archivesBaseName = 'durabletask-samples'
1111

1212
application {
13-
mainClass = 'io.durabletask.samples.SpringDurableTaskSample'
13+
mainClass = 'io.durabletask.samples.WebAppToDurableTaskSchedulerSample'
1414
}
1515

1616
dependencies {
Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,44 @@
1-
// // Copyright (c) Microsoft Corporation. All rights reserved.
2-
// // Licensed under the MIT License.
3-
// package io.durabletask.samples;
4-
5-
// import com.microsoft.durabletask.*;
6-
7-
// import org.springframework.web.bind.annotation.GetMapping;
8-
// import org.springframework.web.bind.annotation.RequestParam;
9-
// import org.springframework.web.bind.annotation.RestController;
10-
11-
// @RestController
12-
// public class OrchestrationController {
13-
14-
// final DurableTaskClient client;
15-
16-
// public OrchestrationController() {
17-
// this.client = new DurableTaskGrpcClientBuilder().build();
18-
// }
19-
20-
// @GetMapping("/hello")
21-
// public String greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
22-
// return String.format("Hello, %s!", name);
23-
// }
24-
25-
// @GetMapping("/placeOrder")
26-
// public NewOrderResponse placeOrder(@RequestParam(value = "item") String item) {
27-
// String instanceId = this.client.scheduleNewOrchestrationInstance(
28-
// "ProcessOrderOrchestration",
29-
// new NewOrchestrationInstanceOptions().setInput(item));
30-
// return new NewOrderResponse(instanceId);
31-
// }
32-
33-
// private class NewOrderResponse {
34-
// private final String instanceId;
35-
36-
// public NewOrderResponse(String instanceId) {
37-
// this.instanceId = instanceId;
38-
// }
39-
40-
// public String getInstanceId() {
41-
// return this.instanceId;
42-
// }
43-
// }
44-
// }
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
package io.durabletask.samples;
4+
5+
import com.microsoft.durabletask.*;
6+
7+
import org.springframework.web.bind.annotation.GetMapping;
8+
import org.springframework.web.bind.annotation.RequestParam;
9+
import org.springframework.web.bind.annotation.RestController;
10+
11+
@RestController
12+
public class OrchestrationController {
13+
14+
final DurableTaskClient client;
15+
16+
public OrchestrationController() {
17+
this.client = new DurableTaskGrpcClientBuilder().build();
18+
}
19+
20+
@GetMapping("/hello")
21+
public String greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
22+
return String.format("Hello, %s!", name);
23+
}
24+
25+
@GetMapping("/placeOrder")
26+
public NewOrderResponse placeOrder(@RequestParam(value = "item") String item) {
27+
String instanceId = this.client.scheduleNewOrchestrationInstance(
28+
"ProcessOrderOrchestration",
29+
new NewOrchestrationInstanceOptions().setInput(item));
30+
return new NewOrderResponse(instanceId);
31+
}
32+
33+
private class NewOrderResponse {
34+
private final String instanceId;
35+
36+
public NewOrderResponse(String instanceId) {
37+
this.instanceId = instanceId;
38+
}
39+
40+
public String getInstanceId() {
41+
return this.instanceId;
42+
}
43+
}
44+
}

samples/src/main/java/io/durabletask/samples/ReadinessController.java

Lines changed: 0 additions & 15 deletions
This file was deleted.

samples/src/main/java/io/durabletask/samples/SpringDurableTaskSample.java renamed to samples/src/main/java/io/durabletask/samples/WebAppToDurableTaskSchedulerSample.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
import org.springframework.web.bind.annotation.*;
1111
import org.springframework.context.ConfigurableApplicationContext;
1212
import org.springframework.context.annotation.Bean;
13+
import org.springframework.context.annotation.ComponentScan;
1314
import org.springframework.context.annotation.Configuration;
15+
import org.springframework.context.annotation.Import;
1416
import org.springframework.boot.context.properties.ConfigurationProperties;
1517
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1618
import org.springframework.beans.factory.annotation.Value;
@@ -50,10 +52,10 @@ class DurableTaskProperties {
5052
*/
5153
@SpringBootApplication
5254
@EnableConfigurationProperties(DurableTaskProperties.class)
53-
public class SpringDurableTaskSample {
55+
public class WebAppToDurableTaskSchedulerSample {
5456

5557
public static void main(String[] args) {
56-
ConfigurableApplicationContext context = SpringApplication.run(SpringDurableTaskSample.class, args);
58+
ConfigurableApplicationContext context = SpringApplication.run(WebAppToDurableTaskSchedulerSample.class, args);
5759

5860
// Get the worker bean and start it
5961
DurableTaskGrpcWorker worker = context.getBean(DurableTaskGrpcWorker.class);
@@ -254,13 +256,14 @@ private static void sleep(int millis) {
254256
}
255257
}
256258

259+
257260
/**
258261
* REST Controller for handling order-related operations.
259262
*/
260263
@RestController
261264
@RequestMapping("/api/orders")
262265
class OrderController {
263-
266+
264267
private final DurableTaskClient client;
265268

266269
public OrderController(DurableTaskClient client) {
@@ -273,7 +276,7 @@ public String createOrder(@RequestBody String orderJson) throws Exception {
273276
"ProcessOrderOrchestration",
274277
orderJson
275278
);
276-
279+
277280
// Wait for the orchestration to complete with a timeout
278281
OrchestrationMetadata metadata = client.waitForInstanceCompletion(
279282
instanceId,
@@ -301,4 +304,4 @@ public String getOrder(@PathVariable String instanceId) throws Exception {
301304
return "{\"status\": \"" + metadata.getRuntimeStatus() + "\"}";
302305
}
303306
}
304-
}
307+
}
Lines changed: 79 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,97 +1,97 @@
1-
// // Copyright (c) Microsoft Corporation. All rights reserved.
2-
// // Licensed under the MIT License.
3-
// package io.durabletask.samples;
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
package io.durabletask.samples;
44

5-
// import com.microsoft.durabletask.*;
5+
import com.microsoft.durabletask.*;
66

7-
// import org.springframework.boot.SpringApplication;
8-
// import org.springframework.boot.autoconfigure.SpringBootApplication;
7+
import org.springframework.boot.SpringApplication;
8+
import org.springframework.boot.autoconfigure.SpringBootApplication;
99

10-
// @SpringBootApplication
11-
// public class WebApplication {
10+
@SpringBootApplication
11+
public class WebApplication {
1212

13-
// public static void main(String[] args) throws InterruptedException {
14-
// DurableTaskGrpcWorker server = createTaskHubServer();
15-
// server.start();
13+
public static void main(String[] args) throws InterruptedException {
14+
DurableTaskGrpcWorker server = createTaskHubServer();
15+
server.start();
1616

17-
// System.out.println("Starting up Spring web API...");
18-
// SpringApplication.run(WebApplication.class, args);
19-
// }
17+
System.out.println("Starting up Spring web API...");
18+
SpringApplication.run(WebApplication.class, args);
19+
}
2020

21-
// private static DurableTaskGrpcWorker createTaskHubServer() {
22-
// DurableTaskGrpcWorkerBuilder builder = new DurableTaskGrpcWorkerBuilder();
21+
private static DurableTaskGrpcWorker createTaskHubServer() {
22+
DurableTaskGrpcWorkerBuilder builder = new DurableTaskGrpcWorkerBuilder();
2323

24-
// // Orchestrations can be defined inline as anonymous classes or as concrete classes
25-
// builder.addOrchestration(new TaskOrchestrationFactory() {
26-
// @Override
27-
// public String getName() { return "ProcessOrderOrchestration"; }
24+
// Orchestrations can be defined inline as anonymous classes or as concrete classes
25+
builder.addOrchestration(new TaskOrchestrationFactory() {
26+
@Override
27+
public String getName() { return "ProcessOrderOrchestration"; }
2828

29-
// @Override
30-
// public TaskOrchestration create() {
31-
// return ctx -> {
32-
// // the input is JSON and can be deserialized into the specified type
33-
// String input = ctx.getInput(String.class);
29+
@Override
30+
public TaskOrchestration create() {
31+
return ctx -> {
32+
// the input is JSON and can be deserialized into the specified type
33+
String input = ctx.getInput(String.class);
3434

35-
// String x = ctx.callActivity("Task1", input, String.class).await();
36-
// String y = ctx.callActivity("Task2", x, String.class).await();
37-
// String z = ctx.callActivity("Task3", y, String.class).await();
35+
String x = ctx.callActivity("Task1", input, String.class).await();
36+
String y = ctx.callActivity("Task2", x, String.class).await();
37+
String z = ctx.callActivity("Task3", y, String.class).await();
3838

39-
// ctx.complete(z);
40-
// };
41-
// }
42-
// });
39+
ctx.complete(z);
40+
};
41+
}
42+
});
4343

44-
// // Activities can be defined inline as anonymous classes or as concrete classes
45-
// builder.addActivity(new TaskActivityFactory() {
46-
// @Override
47-
// public String getName() { return "Task1"; }
44+
// Activities can be defined inline as anonymous classes or as concrete classes
45+
builder.addActivity(new TaskActivityFactory() {
46+
@Override
47+
public String getName() { return "Task1"; }
4848

49-
// @Override
50-
// public TaskActivity create() {
51-
// return ctx -> {
52-
// String input = ctx.getInput(String.class);
53-
// sleep(10000);
54-
// return input + "|" + ctx.getName();
55-
// };
56-
// }
57-
// });
49+
@Override
50+
public TaskActivity create() {
51+
return ctx -> {
52+
String input = ctx.getInput(String.class);
53+
sleep(10000);
54+
return input + "|" + ctx.getName();
55+
};
56+
}
57+
});
5858

59-
// builder.addActivity(new TaskActivityFactory() {
60-
// @Override
61-
// public String getName() { return "Task2"; }
59+
builder.addActivity(new TaskActivityFactory() {
60+
@Override
61+
public String getName() { return "Task2"; }
6262

63-
// @Override
64-
// public TaskActivity create() {
65-
// return ctx -> {
66-
// String input = ctx.getInput(String.class);
67-
// sleep(10000);
68-
// return input + "|" + ctx.getName();
69-
// };
70-
// }
71-
// });
63+
@Override
64+
public TaskActivity create() {
65+
return ctx -> {
66+
String input = ctx.getInput(String.class);
67+
sleep(10000);
68+
return input + "|" + ctx.getName();
69+
};
70+
}
71+
});
7272

73-
// builder.addActivity(new TaskActivityFactory() {
74-
// @Override
75-
// public String getName() { return "Task3"; }
73+
builder.addActivity(new TaskActivityFactory() {
74+
@Override
75+
public String getName() { return "Task3"; }
7676

77-
// @Override
78-
// public TaskActivity create() {
79-
// return ctx -> {
80-
// String input = ctx.getInput(String.class);
81-
// sleep(10000);
82-
// return input + "|" + ctx.getName();
83-
// };
84-
// }
85-
// });
77+
@Override
78+
public TaskActivity create() {
79+
return ctx -> {
80+
String input = ctx.getInput(String.class);
81+
sleep(10000);
82+
return input + "|" + ctx.getName();
83+
};
84+
}
85+
});
8686

87-
// return builder.build();
88-
// }
87+
return builder.build();
88+
}
8989

90-
// private static void sleep(int millis) {
91-
// try {
92-
// Thread.sleep(millis);
93-
// } catch (InterruptedException e) {
94-
// // ignore
95-
// }
96-
// }
97-
// }
90+
private static void sleep(int millis) {
91+
try {
92+
Thread.sleep(millis);
93+
} catch (InterruptedException e) {
94+
// ignore
95+
}
96+
}
97+
}

0 commit comments

Comments
 (0)