package Ġse b . temporal . test . flows . order Ċ Ċ import Ġio . temporal . activity . Activity Ċ import Ġio . temporal . activity . Activity Interface Ċ import Ġio . temporal . api . enums . v 1 . Workflow Id Re use Policy Ċ import Ġio . temporal . client . Workflow Client Ċ import Ġio . temporal . client . Workflow Execution Already Started Ċ import Ġio . temporal . client . Workflow Options Ċ import Ġorg . springframework . util . Assert Ċ import Ġse b . temporal . test . Order Model Ċ import Ġse b . temporal . test . glue . Kafka Configuration Ċ import Ġse b . temporal . test . glue . Kafka Resource Factory Ċ import Ġse b . temporal . test . inbound . Order Req Ċ import Ġse b . temporal . test . store . Order Store Ċ import Ġse b . temporal . test . utils . info Ċ import Ġse b . temporal . test . utils . logger Ċ import Ġse b . temporal . test . utils . send Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . util . UUID ĊĊ Ċ @ Activity Interface Ċ interface ĠOrder Activity Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPerform Ġorder Ġvalidation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġassert Order Valid ( order : ĠOrder Req ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSave Ġan Ġorder Ġinto Ġthe Ġorder Ġstore . ĊĠĠĠĠ Ġ* Ġ@ param Ġorder Ġorder Ġto Ġbe Ġstore ĊĠĠĠĠ Ġ* Ġ@ return Ġorder Ġstore ĠID Ġof Ġthe Ġprovided Ġorder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsave Order ( order Req : ĠOrder Req , Ġalready Set OrderId : ĠUUID ) Ċ Ċ } ĊĊ Ċ /** Ċ Ġ* ĠExample Ġof Ġide mpot ent Ġin - memory Ġactivities Ġimplementation Ċ Ġ*/ Ċ class ĠOrder Activity Impl ( private Ġval Ġorder Store : ĠOrder Store , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġkafka Resource Factory : ĠKafka Resource Factory , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġworkflow Client : ĠWorkflow Client ): ĠOrder Activity Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġby Ġlogger () ĊĊĠĠĠ Ġval Ġproducer Ġ= Ġkafka Resource Factory . new Producer < String , ĠString >( Kafka Configuration . event Order Topic ) !! Ġ// Ġforce Ġnon Ġnull Ġor Ġfail ĊĊĠĠĠ Ġoverride Ġfun Ġassert Order Valid ( order : ĠOrder Req ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAssert . isTrue ( order . qty Ġ!= ĠBigDecimal . ZERO , Ġ" Quantity Ġmust Ġbe Ġdifferent Ġthan Ġ 0 Ġ( zero )") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave Order ( order Req : ĠOrder Req , ĠorderId : ĠUUID ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġctx Ġ= ĠActivity . get ExecutionContext () ĊĠĠĠĠĠĠĠ Ġlog . info ("${ ctx . info ()} :: save Ġorder Ġ${ order Req . id } Ġ-> Ġ$ orderId ") ĊĠĠĠĠĠĠĠ Ġval Ġorder Ġ= ĠOrder Model . Order ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠorderId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Req . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Req . qty , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Req . product ) ĊĠĠĠĠĠĠĠ Ġorder Store . save ( order ) ĊĠĠĠĠĠĠĠ Ġproducer . send ( Kafka Configuration . event Order Topic , ĠorderId , Ġorder ) ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ