Skip to content
Snippets Groups Projects
Commit 691d05e3 authored by Hugo CAUPERT's avatar Hugo CAUPERT
Browse files

feat: better part 2

parent 7e0cc13b
Branches
No related tags found
No related merge requests found
Showing
with 45 additions and 53 deletions
package io.takima.temporalpractice.bakery.kitchen;
public class KitchenWorkflowImpl implements KitchenWorkflow {
@Override
public void makeCookies() {
// Note: System.out.println is used here for simplicity
// In real applications, you should use proper Workflow-aware logging (we'll cover this in Day 2)
......
package io.takima.temporalpractice.bakery;
import io.takima.temporalpractice.bakery.kitchen.KitchenWorker;
import io.takima.temporalpractice.bakery.bake.BakeServiceImpl;
import io.takima.temporalpractice.bakery.batter.BatterServiceImpl;
import io.takima.temporalpractice.bakery.kitchen.KitchenWorkflowImpl;
import io.temporal.client.WorkflowClient;
import io.temporal.serviceclient.WorkflowServiceStubs;
import io.temporal.worker.Worker;
import io.temporal.worker.WorkerFactory;
public class MakeCookiesApp {
public static void main(String[] args) {
// This app should execute the making of all cookies ordered
new KitchenWorker().start();
WorkflowServiceStubs serviceStub = WorkflowServiceStubs.newLocalServiceStubs();
WorkflowClient client = WorkflowClient.newInstance(serviceStub);
WorkerFactory factory = WorkerFactory.newInstance(client);
Worker worker = factory.newWorker("TheOneAndOnlyQueue");
//Workflows
worker.registerWorkflowImplementationTypes(KitchenWorkflowImpl.class);
//Activities
worker.registerActivitiesImplementations(new BakeServiceImpl());
worker.registerActivitiesImplementations(new BatterServiceImpl());
factory.start();
}
}
......@@ -7,8 +7,6 @@ import io.temporal.serviceclient.WorkflowServiceStubs;
public class OrderCookiesApp {
public static void main(String[] args) {
// This app simulates an order of cookies
// It should call the workflow which makes cookies
WorkflowClient client = WorkflowClient.newInstance(WorkflowServiceStubs.newLocalServiceStubs());
WorkflowOptions options = WorkflowOptions.newBuilder()
.setTaskQueue("TheOneAndOnlyQueue")
......@@ -17,6 +15,6 @@ public class OrderCookiesApp {
KitchenWorkflow workflow = client.newWorkflowStub(KitchenWorkflow.class, options);
workflow.makeCookies(); // Start the Workflow Execution
workflow.makeCookies();
}
}
package io.takima.temporalpractice.bakery.kitchen.bake;
package io.takima.temporalpractice.bakery.bake;
import io.temporal.activity.ActivityInterface;
import io.temporal.activity.ActivityMethod;
@ActivityInterface
public interface BakeService {
@ActivityMethod
void bake();
}
package io.takima.temporalpractice.bakery.kitchen.bake;
package io.takima.temporalpractice.bakery.bake;
public class BakeServiceImpl implements BakeService {
@Override
......
package io.takima.temporalpractice.bakery.kitchen.batter;
package io.takima.temporalpractice.bakery.batter;
import io.temporal.activity.ActivityInterface;
import io.temporal.activity.ActivityMethod;
@ActivityInterface
public interface BatterService {
@ActivityMethod
void prepareBatter();
}
package io.takima.temporalpractice.bakery.kitchen.batter;
package io.takima.temporalpractice.bakery.batter;
public class BatterServiceImpl implements BatterService {
@Override
......
package io.takima.temporalpractice.bakery.kitchen;
import io.takima.temporalpractice.bakery.kitchen.bake.BakeServiceImpl;
import io.takima.temporalpractice.bakery.kitchen.batter.BatterServiceImpl;
import io.temporal.client.WorkflowClient;
import io.temporal.client.WorkflowOptions;
import io.temporal.serviceclient.WorkflowServiceStubs;
import io.temporal.worker.Worker;
import io.temporal.worker.WorkerFactory;
public class KitchenWorker {
public void start() {
// Represents the connection to your local cluster. For now, lets keep it simple
WorkflowServiceStubs serviceStub = WorkflowServiceStubs.newLocalServiceStubs();
// Your key for interacting with the Temporal world.
WorkflowClient client = WorkflowClient.newInstance(serviceStub);
WorkerFactory factory = WorkerFactory.newInstance(client);
Worker worker = factory.newWorker("TheOneAndOnlyQueue");
// Register workflows
worker.registerWorkflowImplementationTypes(KitchenWorkflowImpl.class);
// Register activities
worker.registerActivitiesImplementations(new BakeServiceImpl());
worker.registerActivitiesImplementations(new BatterServiceImpl());
factory.start();
}
}
package io.takima.temporalpractice.bakery.kitchen;
import io.takima.temporalpractice.bakery.kitchen.bake.BakeService;
import io.takima.temporalpractice.bakery.kitchen.batter.BatterService;
import io.takima.temporalpractice.bakery.bake.BakeService;
import io.takima.temporalpractice.bakery.batter.BatterService;
import io.temporal.activity.ActivityOptions;
import io.temporal.workflow.Workflow;
import java.time.Duration;
public class KitchenWorkflowImpl implements KitchenWorkflow {
private final ActivityOptions options = ActivityOptions.newBuilder()
......@@ -23,6 +24,6 @@ public class KitchenWorkflowImpl implements KitchenWorkflow {
System.out.println("Starting to prepare your cookie!");
batterService.prepareBatter();
bakeService.bake();
System.out.println("Your cookie is ready!");
System.out.println("Your cookies is ready!");
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment