Skip to content
Snippets Groups Projects
Commit 7b1b18a3 authored by Loïc Ortola's avatar Loïc Ortola
Browse files

feat: added remaining code for docs for part-3

parent 9afa7e15
No related branches found
No related tags found
No related merge requests found
package io.takima.temporalpractice.bakery.kitchen;
import io.takima.temporalpractice.bakery.kitchen.dtos.KitchenDtos.CookieOrderRequest;
import io.takima.temporalpractice.bakery.kitchen.dtos.KitchenDtos.CookieOrderResult;
import io.temporal.workflow.SignalMethod;
import io.temporal.workflow.WorkflowInterface;
import io.temporal.workflow.WorkflowMethod;
@WorkflowInterface
public interface KitchenWorkflow {
@WorkflowMethod
CookieOrderResult makeCookies(CookieOrderRequest request);
@SignalMethod
void ovenReady();
}
package io.takima.temporalpractice.bakery.kitchen;
import io.takima.temporalpractice.bakery.bake.BakeService;
import io.takima.temporalpractice.bakery.bake.dtos.BakeRequest;
import io.takima.temporalpractice.bakery.batter.BatterService;
import io.takima.temporalpractice.bakery.batter.dtos.BatterCreationRequest;
import io.takima.temporalpractice.bakery.kitchen.dtos.KitchenDtos.CookieOrderRequest;
import io.takima.temporalpractice.bakery.kitchen.dtos.KitchenDtos.CookieOrderResult;
import io.takima.temporalpractice.bakery.temporal.TemporalQueues;
import io.takima.temporalpractice.bakery.temporal.TemporalUtils;
import io.temporal.workflow.Workflow;
import java.time.Duration;
public class KitchenWorkflowImpl implements KitchenWorkflow {
private final BatterService batterService;
private final BakeService bakeService;
private boolean ovenReady = false;
public KitchenWorkflowImpl() {
this.batterService = TemporalUtils.newActivityStub(BatterService.class, TemporalQueues.BATTER);
this.bakeService = TemporalUtils.newActivityStub(BakeService.class, TemporalQueues.BAKE);
}
@Override
public CookieOrderResult makeCookies(CookieOrderRequest request) {
System.out.println("Order " + request.orderId() + ": Starting to prepare " + request.quantity() + " cookies with topping " + request.topping() + " and baking preference " + request.bakingPreference());
var batterCreationResult = batterService.prepareBatter(new BatterCreationRequest(request.orderId(), request.topping(), request.quantity()));
var batter = batterCreationResult.batter();
Workflow.await(() -> ovenReady);
var bakeResult = bakeService.bake(new BakeRequest(request.orderId(), batter, request.bakingPreference()));
System.out.println("Order " + request.orderId() + ": Your " + bakeResult.cookies().size() + " cookies are ready!");
return new CookieOrderResult(request.orderId(), bakeResult.cookies());
}
@Override
public void ovenReady() {
this.ovenReady = true;
}
}
package io.takima.temporalpractice.bakery.kitchen;
import io.takima.temporalpractice.bakery.bake.BakeService;
import io.takima.temporalpractice.bakery.bake.dtos.BakeRequest;
import io.takima.temporalpractice.bakery.batter.BatterService;
import io.takima.temporalpractice.bakery.batter.dtos.BatterCreationRequest;
import io.takima.temporalpractice.bakery.kitchen.dtos.KitchenDtos.CookieOrderRequest;
import io.takima.temporalpractice.bakery.kitchen.dtos.KitchenDtos.CookieOrderResult;
import io.takima.temporalpractice.bakery.temporal.TemporalQueues;
import io.takima.temporalpractice.bakery.temporal.TemporalUtils;
import io.temporal.workflow.Workflow;
import java.time.Duration;
public class KitchenWorkflowImpl implements KitchenWorkflow {
private final BatterService batterService;
private final BakeService bakeService;
private boolean ovenReady = false;
public KitchenWorkflowImpl() {
this.batterService = TemporalUtils.newActivityStub(BatterService.class, TemporalQueues.BATTER);
this.bakeService = TemporalUtils.newActivityStub(BakeService.class, TemporalQueues.BAKE);
}
@Override
public CookieOrderResult makeCookies(CookieOrderRequest request) {
System.out.println("Order " + request.orderId() + ": Starting to prepare " + request.quantity() + " cookies with topping " + request.topping() + " and baking preference " + request.bakingPreference());
var batterCreationResult = batterService.prepareBatter(new BatterCreationRequest(request.orderId(), request.topping(), request.quantity()));
var batter = batterCreationResult.batter();
Workflow.await(() -> ovenReady);
var bakeResult = bakeService.bake(new BakeRequest(request.orderId(), batter, request.bakingPreference()));
Workflow.sleep(Duration.ofSeconds(30));
System.out.println("Order " + request.orderId() + ": Your " + bakeResult.cookies().size() + " cookies are ready!");
return new CookieOrderResult(request.orderId(), bakeResult.cookies());
}
@Override
public void ovenReady() {
this.ovenReady = true;
}
}
package io.takima.temporalpractice.bakery.kitchen;
import io.takima.temporalpractice.bakery.bake.BakeService;
import io.takima.temporalpractice.bakery.bake.dtos.BakeRequest;
import io.takima.temporalpractice.bakery.batter.BatterService;
import io.takima.temporalpractice.bakery.batter.dtos.BatterCreationRequest;
import io.takima.temporalpractice.bakery.kitchen.dtos.KitchenDtos.CookieOrderRequest;
import io.takima.temporalpractice.bakery.kitchen.dtos.KitchenDtos.CookieOrderResult;
import io.takima.temporalpractice.bakery.temporal.TemporalQueues;
import io.takima.temporalpractice.bakery.temporal.TemporalUtils;
import io.temporal.workflow.Workflow;
import java.time.Duration;
public class KitchenWorkflowImpl implements KitchenWorkflow {
private final BatterService batterService;
private final BakeService bakeService;
private boolean ovenReady = false;
public KitchenWorkflowImpl() {
this.batterService = TemporalUtils.newActivityStub(BatterService.class, TemporalQueues.BATTER);
this.bakeService = TemporalUtils.newActivityStub(BakeService.class, TemporalQueues.BAKE);
}
@Override
public CookieOrderResult makeCookies(CookieOrderRequest request) {
var timer = Workflow.newTimer(Duration.ofSeconds(30));
System.out.println("Order " + request.orderId() + ": Starting to prepare " + request.quantity() + " cookies with topping " + request.topping() + " and baking preference " + request.bakingPreference());
var batterCreationResult = batterService.prepareBatter(new BatterCreationRequest(request.orderId(), request.topping(), request.quantity()));
var batter = batterCreationResult.batter();
Workflow.await(() -> ovenReady);
var bakeResult = bakeService.bake(new BakeRequest(request.orderId(), batter, request.bakingPreference()));
System.out.println("Order " + request.orderId() + ": Your " + bakeResult.cookies().size() + " cookies are ready!");
timer.get();
return new CookieOrderResult(request.orderId(), bakeResult.cookies());
}
@Override
public void ovenReady() {
this.ovenReady = true;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment