There are some more glitches in the test code as well as in the engine itself. Here is a corrected version of the test code, making the engine start and actually find some rules. However, the engine exits very early with an exception which I haven't debugged yet. /** DMLs ***/ INSERT INTO MY_LOG_PROPERTIES (LOGGER, LOGLEVEL, CREATEDBY, CREATEDDT, UPDATEDDT, UPDATEDBY) VALUES ('*', 'ON', 'Agilan', SYSDATE, SYSDATE, 'Agilan'); INSERT INTO MY_LOG_PROPERTIES (LOGGER, LOGLEVEL, CREATEDBY, CREATEDDT, UPDATEDDT, UPDATEDBY) VALUES ('MY_RULESENGINE', 'DEB', 'Agilan', SYSDATE, SYSDATE, 'Agilan'); --------------- INSERT INTO MY_RULE_EXE_CONFIG (ID, APPID, RULESET_ID, BREAK_CONDN_BEF_AFT, BREAKING_RULEID, UPDDT) VALUES (MY_exe_rule_config_seq.NEXTVAL, 'YourApplicationID', 'YourRuleSetId', 'AFT', 'breakOnFailure', SYSDATE); INSERT INTO MY_RULE_BINDVARIABLES (APPID, VARIABLENAME, BIND_QUERY, INC_TYPE, CACHE_WITHIN_EXEC, UPDDT) VALUES ( 'YourApplicationID', '$v.input_param1_from_caller$', 'SELECT value FROM MY_RE_INPUT_PARAM WHERE EXEID=$p.pExecId$ AND upper(KEY)=''PARAMETERNAME_1''', 'EQ', 'N', SYSDATE); INSERT INTO MY_RULE_BINDVARIABLES (APPID, VARIABLENAME, BIND_QUERY, INC_TYPE, CACHE_WITHIN_EXEC, UPDDT) VALUES ( 'YourApplicationID', '$v.input_param2_list_from_caller$', 'SELECT value FROM MY_RE_INPUT_PARAM WHERE EXEID=$p.pExecId$ AND upper(KEY)=''PARAMETERNAME_2_LIST''', 'IN', 'N', SYSDATE); INSERT INTO MY_RULE_BINDVARIABLES (APPID, VARIABLENAME, BIND_QUERY, INC_TYPE, CACHE_WITHIN_EXEC, UPDDT) VALUES ( 'YourApplicationID', '$v.current_date$', 'SELECT sysdate from dual', 'EQ', 'Y', SYSDATE); INSERT INTO MY_RULE_BINDVARIABLES (APPID, VARIABLENAME, BIND_QUERY, INC_TYPE, CACHE_WITHIN_EXEC, UPDDT) VALUES ( 'YourApplicationID', '$v.somevariable1$', 'SELECT ''data'' from dual', 'EQ', 'N', SYSDATE); INSERT INTO MY_RULE (ID, APPID, RULE_ID, RULESET_ID, RULE_QUERY, UPDDT) VALUES (MY_rule_seq.NEXTVAL, 'YourApplicationID', 'breakOnFailure', 'YourRuleSetId', 'select ''1'' neverbreak from dual where 1=2 ', SYSDATE); INSERT INTO MY_RULE (ID, APPID, RULE_ID, RULESET_ID, RULE_QUERY, UPDDT) VALUES ( MY_rule_seq.NEXTVAL, 'YourApplicationID', 'MyRuleQuery1', 'YourRuleSetId', ' select col1,col2,col3 from some_table where some_col = $v.somevariable1$', SYSDATE); INSERT INTO MY_RULE (ID, APPID, RULE_ID, RULESET_ID, RULE_QUERY, UPDDT) VALUES ( MY_rule_seq.NEXTVAL, 'YourApplicationID', 'MyRuleQuery2', 'YourRuleSetId', ' select col1,col2,col3 from some_other_table where some_date_col = $v.current_date$ ', SYSDATE); INSERT INTO MY_RULE (ID, APPID, RULE_ID, RULESET_ID, RULE_QUERY, UPDDT) VALUES ( MY_rule_seq.NEXTVAL, 'YourApplicationID', 'MyRuleQuery3', 'YourRuleSetId', ' select col1,col2,col3 from some_other_table where some_col = $v.input_param1_from_caller$ ', SYSDATE); INSERT INTO MY_RULE (ID, APPID, RULE_ID, RULESET_ID, RULE_QUERY, UPDDT) VALUES ( MY_rule_seq.NEXTVAL, 'YourApplicationID', 'MyRuleQuery4', 'YourRuleSetId', ' select col1,col2,col3 from some_other_table where some_col in $v.input_param2_list_from_caller$ ', SYSDATE); ----------------------- /** Testing the proc **/ CREATE OR REPLACE PROCEDURE prc_test AS begin /** Insert input_param and execute the proc in the same session **/ insert into MY_RE_INPUT_PARAM (exeid,key,value) values ( 1, 'PARAMETERNAME_1','apple'); insert into MY_RE_INPUT_PARAM (exeid,key,value) values ( 1, 'PARAMETERNAME_2_LIST','apple'); insert into MY_RE_INPUT_PARAM (exeid,key,value) values ( 1, 'PARAMETERNAME_2_LIST','mango'); insert into MY_RE_INPUT_PARAM (exeid,key,value) values ( 1, 'PARAMETERNAME_2_LIST','banana'); insert into MY_RE_INPUT_PARAM (exeid,key,value) values ( 1, 'PARAMETERNAME_2_LIST','avacado'); MY_RULESENGINE.pub_fireRules('YourApplicationID','YourRuleSetId',1); end; /
↧