package Ġcom . b ew ell . flows Ċ Ċ import Ġco . parallel universe . fib ers . Suspend able Ċ import Ġcom . b ew ell . contracts . Well ness Ċ import Ġcom . b ew ell . contracts . data . Well ness Details Ċ import Ġnet . cord a . core . flows . Collect Signature Flow Ċ import Ġnet . cord a . core . flows . Final ity Flow Ċ import Ġnet . cord a . core . flows . Flow Logic Ċ import Ġnet . cord a . core . flows . Flow Session Ċ import Ġnet . cord a . core . flows . Initi ated By Ċ import Ġnet . cord a . core . flows . Initi ating Flow Ċ import Ġnet . cord a . core . flows . Sign Transaction Flow Ċ import Ġnet . cord a . core . flows . Start able By RPC Ċ import Ġnet . cord a . core . identity . Party Ċ import Ġnet . cord a . core . transactions . Signed Transaction Ċ import Ġnet . cord a . core . transactions . Transaction Builder Ċ Ċ /** Ċ Ġ* ĠFlow Ġto Ġcreate Ġa Ġwell ness Ġstate . ĠGiven Ġan Ġowner , Ġprovider Ġand Ġthe Ġwell ness Ġdetails , Ġthe Ġbroker Ġflow Ċ Ġ* Ġcreates Ġa Ġwhich Ġit Ġsigns Ġas Ġwell Ġas Ġobt ains Ġthe Ġsignature Ġof Ġthe Ġwell ness Ġprovider . Ċ Ġ*/ Ċ object ĠCreate Well ness Flow Ġ{ ĊĊĠĠĠ Ġ@ Initi ating Flow ĊĠĠĠ Ġ@ Start able By RPC ĊĠĠĠ Ġclass ĠBroker Flow ( private Ġval Ġowner : ĠParty , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġprovider : ĠParty , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġdetails : ĠWell ness Details ) Ġ: ĠFlow Logic < Signed Transaction >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnot ary Ġ= Ġservice Hub . network Map Cache . not ary Id entities . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠTransaction Builder ( not ary ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsigner Ġ= ĠWell ness . generate Create ( builder , Ġowner , Ġprovider , Ġdetails , Ġnot ary ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Ġ= Ġservice Hub . sign Initial Transaction ( builder , Ġsigner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprovider Session Ġ= Ġinitiate Flow ( provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprovider Signature Ġ= Ġsub Flow ( Collect Signature Flow ( tx , Ġprovider Session , Ġprovider . own ing Key )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsigned Tx Ġ= Ġtx Ġ+ Ġprovider Signature ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinal ized Tx Ġ= Ġsub Flow ( Final ity Flow ( signed Tx )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfinal ized Tx ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Initi ated By ( Broker Flow :: class ) ĊĠĠĠ Ġclass ĠProvider Flow ( val Ġbroker Session : ĠFlow Session ) Ġ: ĠFlow Logic < Signed Transaction >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsign Transaction Flow Ġ= Ġobject Ġ: ĠSign Transaction Flow ( broker Session ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Transaction ( st x : ĠSigned Transaction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstates : ĠIterable < Well ness . State > Ġ= Ġst x . tx . outputs . map Ġ{ Ġit . data Ġas ĠWell ness . State Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstates . forEach Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . participants . forEach Ġ{ Ġan on Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( service Hub . identity Service . well Known Party From Anonymous ( anon ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Transaction Ġstate Ġ$ state Ġinvolves Ġunknown Ġparticipant Ġ$ anon " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( state . provider Ġin Ġservice Hub . my Info . legal Id entities ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Incorrect Ġprovider Ġ${ state . provider } Ġon Ġtransaction Ġstate Ġ$ state " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Id Ġ= Ġsub Flow ( sign Transaction Flow ). id ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠwaitFor Ledger Commit ( tx Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ