Skip to content

Commit 2880ee1

Browse files
committed
Add signal samples
1 parent f1a1523 commit 2880ee1

File tree

4 files changed

+61
-2
lines changed

4 files changed

+61
-2
lines changed

src/main/java/com/uber/cadence/samples/spring/cadence/CadenceAutoConfiguration.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55

66
import com.uber.cadence.client.WorkflowClient;
77
import com.uber.cadence.client.WorkflowClientOptions;
8-
import com.uber.cadence.samples.spring.workflows.HelloWorldWorkflowImpl;
8+
import com.uber.cadence.samples.spring.workflows.impl.HelloWorldWorkflowImpl;
9+
import com.uber.cadence.samples.spring.workflows.impl.SignalWorkflowImpl;
910
import com.uber.cadence.serviceclient.ClientOptions;
1011
import com.uber.cadence.serviceclient.WorkflowServiceTChannel;
1112
import com.uber.cadence.worker.Worker;
@@ -33,7 +34,12 @@ public void startWorker(ApplicationStartedEvent event) {
3334
WorkflowClient workflowClient = context.getBean(WorkflowClient.class);
3435
WorkerFactory factory = WorkerFactory.newInstance(workflowClient);
3536
Worker worker = factory.newWorker(TASK_LIST);
37+
38+
// HelloWorldWorkflow registration
3639
worker.registerWorkflowImplementationTypes(HelloWorldWorkflowImpl.class);
40+
41+
// SignalWorkflow registration
42+
worker.registerWorkflowImplementationTypes(SignalWorkflowImpl.class);
3743
factory.start();
3844
}
3945
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.uber.cadence.samples.spring.workflows;
2+
3+
import com.uber.cadence.samples.spring.models.SampleMessage;
4+
import com.uber.cadence.workflow.SignalMethod;
5+
import com.uber.cadence.workflow.WorkflowMethod;
6+
7+
public interface SignalWorkflow {
8+
@WorkflowMethod
9+
void getGreeting(SampleMessage sampleMessage);
10+
11+
@SignalMethod
12+
void waitForGreeting(String greeting);
13+
14+
@SignalMethod
15+
void cancel();
16+
}

src/main/java/com/uber/cadence/samples/spring/workflows/HelloWorldWorkflowImpl.java renamed to src/main/java/com/uber/cadence/samples/spring/workflows/impl/HelloWorldWorkflowImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
package com.uber.cadence.samples.spring.workflows;
1+
package com.uber.cadence.samples.spring.workflows.impl;
22

33
import com.uber.cadence.samples.spring.models.SampleMessage;
4+
import com.uber.cadence.samples.spring.workflows.HelloWorldWorkflow;
45
import com.uber.cadence.workflow.Workflow;
56
import org.slf4j.Logger;
67

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.uber.cadence.samples.spring.workflows.impl;
2+
3+
import com.uber.cadence.samples.spring.models.SampleMessage;
4+
import com.uber.cadence.samples.spring.workflows.SignalWorkflow;
5+
import com.uber.cadence.workflow.Workflow;
6+
import org.slf4j.Logger;
7+
8+
public class SignalWorkflowImpl implements SignalWorkflow {
9+
private final Logger logger = Workflow.getLogger(SignalWorkflowImpl.class);
10+
private String name;
11+
private boolean cancel = false;
12+
13+
@Override
14+
public void getGreeting(SampleMessage sampleMessage) {
15+
logger.info("executing SignalWorkflow::getGreeting");
16+
this.name = sampleMessage.GetMessage();
17+
while (true) {
18+
Workflow.await(() -> cancel);
19+
if (cancel) {
20+
logger.info("SignalWorkflow cancelled");
21+
return;
22+
}
23+
}
24+
}
25+
26+
@Override
27+
public void waitForGreeting(String greeting) {
28+
logger.info("received signal from SignalWorkflow:waitForName");
29+
logger.info(greeting + " " + name + "!");
30+
}
31+
32+
@Override
33+
public void cancel() {
34+
this.cancel = true;
35+
}
36+
}

0 commit comments

Comments
 (0)