Skip to content

Commit fc4d9d0

Browse files
Fix suffix problem with workflow api. Now the workflow service will have the same exact name given by the user, while the workflow manager will be suffixed with WorkflowManager (#225)
1 parent 65e7729 commit fc4d9d0

File tree

3 files changed

+16
-34
lines changed

3 files changed

+16
-34
lines changed

examples/src/main/java/my/restate/sdk/examples/Loan.java renamed to examples/src/main/java/my/restate/sdk/examples/LoanWorkflow.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
import org.apache.logging.log4j.Logger;
3838

3939
@Service(ServiceType.WORKFLOW)
40-
public class Loan {
40+
public class LoanWorkflow {
4141

4242
// --- Data types used by the Loan Worfklow
4343

@@ -86,7 +86,7 @@ public BigDecimal getAmount() {
8686
}
8787
}
8888

89-
private static final Logger LOG = LogManager.getLogger(Loan.class);
89+
private static final Logger LOG = LogManager.getLogger(LoanWorkflow.class);
9090

9191
private static final StateKey<Status> STATUS =
9292
StateKey.of("status", JacksonSerdes.of(Status.class));
@@ -160,7 +160,7 @@ public void rejectLoan(WorkflowSharedContext ctx) {
160160

161161
public static void main(String[] args) {
162162
RestateHttpEndpointBuilder.builder()
163-
.with(new Loan())
163+
.with(new LoanWorkflow())
164164
.withService(new MockBank())
165165
.buildAndListen();
166166

@@ -176,7 +176,7 @@ public static void main(String[] args) {
176176
// To invoke the workflow:
177177
Channel restateChannel =
178178
NettyChannelBuilder.forAddress("127.0.0.1", 8080).usePlaintext().build();
179-
LoanExternalClient client = new LoanExternalClient(restateChannel, "my-loan");
179+
LoanWorkflowExternalClient client = new LoanWorkflowExternalClient(restateChannel, "my-loan");
180180

181181
WorkflowExecutionState state =
182182
client.submit(

sdk-workflow-api/src/main/java/dev/restate/sdk/workflow/impl/WorkflowCodegenUtil.java

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -281,11 +281,7 @@ public static <T> Optional<T> getState(
281281

282282
public static <Req, Res> MethodDescriptor<Req, Res> generateMethodDescriptorForWorkflowManager(
283283
MethodDescriptor<Req, Res> original, String workflowFqsn) {
284-
String workflowServiceFqsn =
285-
workflowFqsn
286-
+
287-
// This is simple name because our template service doesn't have a package!
288-
original.getServiceName();
284+
String workflowServiceFqsn = workflowFqsn + WorkflowMangledDescriptors.MANAGER_SERVICE_SUFFIX;
289285
return original.toBuilder()
290286
.setFullMethodName(
291287
MethodDescriptor.generateFullMethodName(
@@ -295,43 +291,28 @@ public static <Req, Res> MethodDescriptor<Req, Res> generateMethodDescriptorForW
295291

296292
public static <Req, Res> MethodDescriptor<Req, Res> generateMethodDescriptorForWorkflow(
297293
MethodDescriptor<Req, Res> original, String workflowFqsn, String methodName) {
298-
String workflowServiceFqsn =
299-
workflowFqsn
300-
+
301-
// This is simple name because our template service doesn't have a package!
302-
original.getServiceName();
303294
return original.toBuilder()
304295
.setFullMethodName(
305296
MethodDescriptor.generateFullMethodName(
306-
workflowServiceFqsn, DescriptorUtils.toMethodName(methodName)))
297+
workflowFqsn, DescriptorUtils.toMethodName(methodName)))
307298
.build();
308299
}
309300

310301
public static MethodDescriptor<InvokeRequest, SubmitResponse>
311302
generateMethodDescriptorForWorkflowSubmit(String workflowFqsn) {
312-
String workflowServiceFqsn =
313-
workflowFqsn
314-
+
315-
// This is simple name because our template service doesn't have a package!
316-
WorkflowGrpc.getSubmitMethod().getServiceName();
317303
return WorkflowGrpc.getSubmitMethod().toBuilder()
318304
.setFullMethodName(
319305
MethodDescriptor.generateFullMethodName(
320-
workflowServiceFqsn, WorkflowGrpc.getSubmitMethod().getBareMethodName()))
306+
workflowFqsn, WorkflowGrpc.getSubmitMethod().getBareMethodName()))
321307
.build();
322308
}
323309

324310
public static MethodDescriptor<InvokeRequest, Empty>
325311
generateMethodDescriptorForWorkflowInternalStart(String workflowFqsn) {
326-
String workflowServiceFqsn =
327-
workflowFqsn
328-
+
329-
// This is simple name because our template service doesn't have a package!
330-
WorkflowGrpc.getInternalStartMethod().getServiceName();
331312
return WorkflowGrpc.getInternalStartMethod().toBuilder()
332313
.setFullMethodName(
333314
MethodDescriptor.generateFullMethodName(
334-
workflowServiceFqsn, WorkflowGrpc.getInternalStartMethod().getBareMethodName()))
315+
workflowFqsn, WorkflowGrpc.getInternalStartMethod().getBareMethodName()))
335316
.build();
336317
}
337318
}

sdk-workflow-api/src/main/java/dev/restate/sdk/workflow/impl/WorkflowMangledDescriptors.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
class WorkflowMangledDescriptors {
2020

21+
static final String MANAGER_SERVICE_SUFFIX = "InternalManager";
22+
2123
private final Descriptors.FileDescriptor outputFileDescriptor;
2224
private final String workflowServiceFqsn;
2325
private final String workflowServiceSimpleName;
@@ -84,7 +86,7 @@ public static WorkflowMangledDescriptors mangle(WorkflowServicesBundle workflowS
8486
workflowServicesBundle.getSimpleName(),
8587
workflowServicesBundle.getSharedMethods());
8688
String workflowManagerServiceSimpleName =
87-
mangleWorkflowOrchestratorDescriptor(
89+
mangleWorkflowManagerDescriptor(
8890
protoDescriptorBuilder, workflowServicesBundle.getSimpleName());
8991

9092
String workflowServiceFqcn =
@@ -116,13 +118,12 @@ public static WorkflowMangledDescriptors mangle(WorkflowServicesBundle workflowS
116118

117119
private static String mangleWorkflowDescriptor(
118120
DescriptorProtos.FileDescriptorProto.Builder protoDescriptorBuilder,
119-
String prefix,
121+
String newSimpleName,
120122
Set<String> methods) {
121123
var serviceDescriptorBuilder = protoDescriptorBuilder.getServiceBuilder(0);
122124

123125
// Prefix service name
124-
String newServiceName = prefix + protoDescriptorBuilder.getService(0).getName();
125-
serviceDescriptorBuilder.setName(newServiceName);
126+
serviceDescriptorBuilder.setName(newSimpleName);
126127

127128
// Unroll methods
128129
assert serviceDescriptorBuilder.getMethodCount() == 3;
@@ -136,13 +137,13 @@ private static String mangleWorkflowDescriptor(
136137
// Update original descriptor builder
137138
protoDescriptorBuilder.setService(0, serviceDescriptorBuilder);
138139

139-
return newServiceName;
140+
return newSimpleName;
140141
}
141142

142-
private static String mangleWorkflowOrchestratorDescriptor(
143+
private static String mangleWorkflowManagerDescriptor(
143144
DescriptorProtos.FileDescriptorProto.Builder protoDescriptorBuilder, String prefix) {
144145
// Prefix service name
145-
String newServiceName = prefix + protoDescriptorBuilder.getService(1).getName();
146+
String newServiceName = prefix + MANAGER_SERVICE_SUFFIX;
146147
protoDescriptorBuilder.setService(
147148
1, protoDescriptorBuilder.getServiceBuilder(1).setName(newServiceName));
148149

0 commit comments

Comments
 (0)