package Ġprocess . vert icles Ċ Ċ import Ġde . h ux h orn . s ulk y . ul id . UL ID Ċ import Ġio . vertx . core . Abstract Vert icle Ċ import Ġio . vertx . core . Promise Ċ import Ġio . vertx . core . event bus . Message Ċ import Ġio . vertx . core . json . Json Ċ import Ġio . vertx . core . spi . cluster . ClusterManager Ċ import Ġorg . apache . ignite . Ign ite Ċ import Ġprocess . engine .* Ċ import Ġprocess . infrastructure . Ign ite Repository Ċ import Ġjava . io . Serializable Ċ Ċ data Ġclass ĠEvent Bus Config ( ĊĠĠĠ Ġval Ġstart Process Topic Address : ĠString , ĊĠĠĠ Ġval Ġstatistics Address : ĠString Ċ ) Ġ: ĠSerializable Ċ Ċ fun Ġbuild EventBus Vert icle ( ĊĠĠĠ Ġworkflows : ĠMap < String , ĠWorkflow < Any >>, ĊĠĠĠ Ġign ite : ĠIgn ite , ĊĠĠĠ Ġcluster Manager : ĠCluster Manager Ċ ): ĠEvent Bus Vert icle Ġ{ ĊĠĠĠ Ġval Ġul id Ġ= ĠU L ID () ĊĠĠĠ Ġval Ġign ite Repository Ġ= ĠIgn ite Repository ( ĊĠĠĠĠĠĠĠ Ġwait Processes Queue Name Ġ= Ġ" wait Processes Queue ", ĊĠĠĠĠĠĠĠ Ġfinished Processes Cache Name Ġ= Ġ" finished Processes ", ĊĠĠĠĠĠĠĠ Ġprocesses Cache Name Ġ= Ġ" processes ", ĊĠĠĠĠĠĠĠ Ġnodes Cache Name Ġ= Ġ" nodes ", ĊĠĠĠĠĠĠĠ Ġign ite Ġ= Ġign ite ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġprocess Query Service Ġ= ĠProcess Query Service ( ignite Repository ) ĊĠĠĠ Ġval Ġnode Synchronization Service Ġ= ĠNode Synchronization Service ( ignite Repository ) ĊĠĠĠ Ġval Ġengine Service Ġ= ĠEngine Service ( ĊĠĠĠĠĠĠĠ Ġengine Ġ= ĠEngine ( ignite Repository ), ĊĠĠĠĠĠĠĠ Ġnode Synchronization Service Ġ= Ġnode Synchronization Service , ĊĠĠĠĠĠĠĠ Ġworkflow Store Ġ= ĠWorkflow Store ( workflows ), ĊĠĠĠĠĠĠĠ Ġul id Ġ= Ġul id , ĊĠĠĠĠĠĠĠ Ġrepository Ġ= Ġign ite Repository , ĊĠĠĠĠĠĠĠ Ġcluster Manager Ġ= Ġcluster Manager ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġevent Bus Config Ġ= ĠEvent Bus Config (" start _ process ", Ġ" statistics ") ĊĠĠĠ Ġreturn ĠEvent Bus Vert icle ( ĊĠĠĠĠĠĠĠ Ġengine Service Ġ= Ġengine Service , ĊĠĠĠĠĠĠĠ Ġprocess Query Service Ġ= Ġprocess Query Service , ĊĠĠĠĠĠĠĠ Ġconfig Ġ= Ġevent Bus Config ĊĠĠĠ Ġ) Ċ } Ċ Ċ class ĠEvent Bus Vert icle ( ĊĠĠĠ Ġprivate Ġval Ġengine Service : ĠEngine Service , ĊĠĠĠ Ġprivate Ġval Ġconfig : ĠEvent Bus Config , ĊĠĠĠ Ġprivate Ġval Ġprocess Query Service : ĠProcess Query Service Ċ ) Ġ: ĠAbstract Vert icle () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġstart ( start Promise : ĠPromise < Void >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġevent Bus Ġ= Ġvert x . event Bus () ĊĠĠĠĠĠĠĠ Ġevent Bus . consumer < String >( config . start Process Topic Address ) Ġ{ Ġstart Process ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġevent Bus . consumer < String >( config . statistics Address ) Ġ{ Ġget Statistics ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġengine Service . start ( vertx ) ĊĊĠĠĠĠĠĠĠ Ġstart Promise . complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Process ( message : ĠMessage < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġworkflow Name Ġ= Ġmessage . headers ()[" workflow Name "] ĊĠĠĠĠĠĠĠ Ġengine Service . start Process ( workflow Name , Ġmessage . body ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Success Ġ{ Ġmessage . reply ( it . value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Failure Ġ{ Ġmessage . fail (- 1 , Ġit . cause ?. message ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Statistics ( message : ĠMessage < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġprocess Query Service . get Statistics () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Success Ġ{ Ġmessage . reply ( Json . encode ( it )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Failure Ġ{ Ġmessage . fail (- 1 , Ġit . cause ?. message ) Ġ} ĊĠĠĠ Ġ} Ċ }