package Ġrule Ċ Ċ /** Ċ Ġ* ĠRule Engine Ġinterface Ġwhich Ġis Ġimplemented Ġby ĠDefault Rule Engine Ġfor Ġrule Ġand Ġrule Set Ġregistry Ġand Ċ Ġ* Ġlookup . ĠBasic ally , Ġit Ġmanages Ġall Ġthe Ġrules Ġon Ġthe Ġinstance Ġand Ġcan Ġfire Ġthese Ġrules Ġbased Ġon Ġthe Ċ Ġ* ĠsetId Ġof Ġa Ġrule Ġset Ġor Ġid Ġof Ġa Ġspecific Ġrule . Ċ Ġ* Ċ Ġ* ĠEach ĠRule Engine Ġinstance Ġwill Ġbe Ġassociate Ġwith Ġa Ġfact Ġthat Ġcan Ġbe Ġused Ġto Ġfire Ġthe Ġrule ( s ). Ċ Ġ* Ċ Ġ* Ġ@ author ĠSteve ĠHu Ċ Ġ*/ Ċ interface ĠRule Engine < T > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġsingle Ġrule Ġto Ġthe Ġrule Ġengine Ġwhich Ġcan Ġbe Ġexecuted Ġby Ġthe Ġrule Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġrule ĠRule < T > Ġthe Ġrule Ġwhich Ġis Ġadded Ġto Ġthe Ġsingle Ġrule Ġmap . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Rule ( rule : ĠRule < T >) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġrule Set Ġto Ġthe Ġrule Ġengine Ġwhich Ġcan Ġbe Ġexecuted Ġby Ġthe ĠsetId . ĊĠĠĠĠ Ġ* Ġ@ param Ġrule Set ĠRule Set < T > Ġthe Ġrule Set Ġwhich Ġis Ġadded Ġto Ġthe Ġrule Set Ġmap ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Rule Set ( rule Set : ĠRule Set < T >) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġfire Ġa Ġsingle Ġrule Ġby Ġits Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġid Ġrule ĠId ĊĠĠĠĠ Ġ* Ġ@ param Ġt ĠT Ġof Ġfact ĊĠĠĠĠ Ġ* Ġ@ return ĠBoolean Ġtrue Ġif Ġthe Ġrule Ġcondition Ġis Ġmet Ġand Ġthe Ġaction Ġis Ġexecuted . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfire Rule ( id : ĠString , Ġt : ĠT ): ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġfire Ġa Ġset Ġof Ġrules Ġby Ġits ĠsetId ĊĠĠĠĠ Ġ* Ġ@ param ĠsetId Ġrule Ġset Ġid ĊĠĠĠĠ Ġ* Ġ@ param Ġt ĠT Ġof Ġfact ĊĠĠĠĠ Ġ* Ġ@ return ĠBoolean Ġtrue Ġif Ġat Ġleast Ġone Ġrule Ġcondition Ġis Ġmet . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfire Rule Set ( setId : ĠString , Ġt : ĠT ): ĠBoolean ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Volatile Ġprivate Ġvar ĠINSTANCE : ĠRule Engine < *> ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T > ĠgetInstance (): ĠRule Engine < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE ?: Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Rule Engine < T >(). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠINSTANCE Ġas ĠRule Engine < T > ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ