private static DTDecisionRule toDecisionRule ( EvaluationContext mainCtx , FEEL embeddedFEEL , int index , List < ? > rule , int inputSize ) { // TODO should be check indeed block of inputSize n inputs, followed by block of outputs. DTDecisionRule dr = new DTDecisionRule ( index ) ; for ( int i = 0 ; i < rule . size ( ) ; i ++ ) { Object o = rule . get ( i ) ; if ( i < inputSize ) { dr . getInputEntry ( ) . add ( toUnaryTest ( mainCtx , o ) ) ; } else { FEELEventListener ruleListener = event -> mainCtx . notifyEvt ( ( ) -> new FEELEventBase ( event . getSeverity ( ) , Msg . createMessage ( Msg . ERROR_COMPILE_EXPR_DT_FUNCTION_RULE_IDX , index + 1 , event . getMessage ( ) ) , event . getSourceException ( ) ) ) ; embeddedFEEL . addListener ( ruleListener ) ; CompiledExpression compiledExpression = embeddedFEEL . compile ( ( String ) o , embeddedFEEL . newCompilerContext ( ) ) ; dr . getOutputEntry ( ) . add ( compiledExpression ) ; embeddedFEEL . removeListener ( ruleListener ) ; } } return dr ; }
Convert row to DTDecisionRule