Dynamic Business Rules - Where to place
Hi,
I am doing POC for a fortune 10 client and they have some business rules before crud actions are going to take place in DB. We have very minimal tables (less than 10) and its small application but web service (btw, this has to be webservice app) consumers are around 200 per sec.
The requirement with respect to business rules are also minimal (like 30 rules for entire project) but these rules will change very often(like once in a month). Assume these rules are on the enterprise level and not on the application level.
I am looking for best possible solution to achieve by developing small rules engine or putting them into another xml and apply transformation once request arrives.
I am confused of deciding which is better like putting business rules in xslt vs java business object. XSLT is allowing me to change rules with minimum impact on the system but it is hard to maintain and adding new rules (we are not anticipating any more new rules within next two years).
On the other hand, If I put in Java business object then it allows lot of flexibility to inject new rules and easy to maintain with cleaner code.
So, in short my questions are below.
1. Is it good practice to put small set of business rules in xml/xslt?
2.are there any alternative business rules engines are available?
Any other suggestion related to above discussions are welcome.
Thanks.
I believe this is what you want.
DROOLS - drools - dynamic rules for java
http://sourceforge.net/project/showfiles.php?group_id=37037
http://www.onjava.com/pub/a/onjava/2005/08/03/drools.html?page=2
good luck.
Similar Messages
-
Hi,
I am trying to create a dynamic business rule through endeca developer studio. I have created a zone, style and a rule.
My rule doesn't contain any triggers and I have set it to "Everywhere". I have added a Featured records so that a particular record appears everytime. In Target tab, I have added a dimension value which is a Auto generated.
But when I run baseline_update I do not see any promoted records in my endeca_jspref page. Is there anything which I am missing to reflect the promoted records in my endeca_jspref page? Please help.
Thanks,
SavIf you are using business rules I'm guessing you are on an earlier version of Endeca and/or not using Experience Manager. If so, is Workbench integration enabled and merch_rule_group_default.xml set up as a Workbench-managed file? You can see this in the "ConfigManager" component, property list of webStudioMaintainedFileX". If merch_rule is listed there, then the business rules configured via Developer Studio are ignored in favour of the ones set up in Workbench, so try running ./control/update_web_studio_config.sh, then adding the business rule via Workbench (http://<server>:8006/admin).
Michael -
HI John: Advise for Business Rule or Calc Script
Hi John,
I need your Advice regarding Business Rule as earlier i took all ur advice seriously and also succeeded; This is toughest area for me.
1) Any useful document which help me to understand Business Rule apart from HBR admin pdf ?
1) Any Blog/Source/PDF/PPT especially for Planning Business Rule ?
Thanks for any Help.
Regards
N KumarHi,
Well business rules are really just calc scripts with a few additional features.
So to understand business rules a good place to start is looking at calc script functions and commands, the essbase technical reference includes details on all this :- http://download.oracle.com/docs/cd/E10530_01/doc/epm.931/html_esb_techref/techref.htm
If you get stuck on calc scripts then the essbase forum is also a good place to ask for advice as there are many experts on there.
I have not seen many sources for information relating to just business rules.
Cheers
John
http://john-goodwin.blogspot.com/ -
Conditional vs Business rule transitions
Any thoughts on when I should be using a business rule transition instead of a conditional? Any need to use this yet?
I understand the primary distinction is "dynamic" but am having a hard time getting my head around the difference without an example.
Cheers,
Andrew
AndrewAndrew,
I think business rules are mostly useful when modeling a condition that is likely to change, and you want to make it easy to change the condition on-the-fly, without having to change and re-deploy the process.
A simple example is when there is a transition that must be followed only when a variable value is above some predefined value (for example, a manager must approve all orders above $ 10K).
If using a business rule, this "10K" value can be easily changed as needed.
The ALBPM documentation has some guidelines on when to use Business Rules (section "When to use Dynamic Business Rules):
http://edocs.bea.com/albsi/docs60/studio/designer/business_rules_editor/t_Using_Dynamic_Business_Rules.html
My example is taken from the one in the document describing ALBPM 6.0 new features:
http://edocs.bea.com/albsi/docs60/resources/ALBPM6.0_NewFeaturesOverview.pdf
regards,
Eugenio -
Dynamic validation of Business Rules
Who has a good thought/example about a principle of dynamically validating Business Rules without coding every time each BR?
I am thinking about a table where I can enter the expressions like:
- <p1> is not Null
- <p1> not in (select 'x' from <table>)
- <p1> < 2000
This logically, simple expressions should return a boolean expression (true or false).First, in a well designed data model, I'm not sure I see the need for data validation logic to change regularly. If a particular column cannot be NULL today, it would be rather unlikely that it would somehow need to be NULL tomorrow.
Second, I'm not sure I see what this approach buys you over the much simpler approach of adding and removing check constraints if the data model changes. Adding and removing a constraint is pretty trivial-- orders of magnitude less difficult than doing the analysis to determine what constraint needs to change and what impact that has downstream.
Third, I would suspect that if you need to encode these sorts of constrains in a table, your system will kill downstream systems with regularity. If p1 is NOT NULL today, but tomorrow it suddenly allows NULL values, a consumer application might well break (or worse, silently return incorrect results). Data changes should not be able to screw up downstream systems.
Fourth, if you did build such a system, you would have to build your own constraint validator, rather than being able to rely on Oracle's (unless you wrote code to create and drop Oracle constraints based on values in a table, but that seems rather convoluted). Given that Oracle's constraint validation engine is highly optimmized and highly accurate, a home grown engine isn't going to look particularly good in comparison.
Justin
Distributed Database Consulting, Inc.
http://www.ddbcinc.com/askDDBC -
Business Rules(Rule Author)-Where to get Car Rental[car-objs.jar file]
I am using Oracle SOA Suite 10.1.3.1.0 and Oracle 10 G 10.2.0.3.0, I am learning to use Rule Author and following "Getting Started with Rule Author" link-->"http://otndnld.oracle.co.jp/document/products/as10g/101300/B25221_03/web.1013/b15986/guistart.htm#sthref93"
however I am getting stuck on one point "2.5 Defining a Data Model for the Car Rental Sample" because I am unable to locate car rental sample file. please help me finding the location of file in SOA suite, If some one has this file kindly send it to me on "[email protected]".
The Name of the jar file is "car-objs.jar"
thanks
Yatan
Edited by: Yatanveer Singh on Dec 15, 2008 12:28 AMhi Guys please help, I am still stuck I have to learn Rule Author in order to work on Business Rules, I am not able to locate car-objs.jar file no where in SOA suite or Oracle 10 g. I am not able to follow the sample provided by Oracle "http://download.oracle.com/docs/cd/B25221_04/web.1013/b15986/guistart.htm".
If I wont get help form forum then where to get help from??
Please tell me where to find car-objs.jar file or email me [email protected]
thanks
Yatan -
Where and how to create business rules?
Hi All,
1) Where and how to create business rules?
2) How to configure Rule Engines (Ex: JRULE Engine or any other Rule Engines)?
3) Whar products are available for Rule Engines?
Thanks in advanceHi,
You have some options on business rules.
If you just want to create business rules that are easy for business owners to edit without a lot of training, Oracle BPM has a simple business rules creation and end user edit capability. The benefits to using the rules that come with Oracle BPM are:
<li> they are simple and easy to edit
<li> end users can get up to speed quickly to edit them
<li> when changed, the business process is immediately impacted
<li> they can use the Oracle BPM business parameters that also come with the product
Drawbacks are:
<li> you can only use Project variables as the variable content inside of them
<li> if a company already has a business rules engine, they are different that the company's standard
Business rules engines have been used with Oracle BPM. If you are a consultant, first ask if there is a standard business rules engine that the company already has purchased that they use (e.g. iLog from IBM, Corticon...). If this is the case, you typically integrate to the rules using a web service interface that the business rules engine exposes.
If they do not already have a business rules engine, consider Jrules. The benefits are:
<li> it is a part of the Oracle BPM Suite that they might have purchased
<li> version 11g of the Jrules is coming out soon with a friendly front end
Hope this helps,
Dan -
Where can I find the complete Oracle Business Rules Java API Reference ?
Does anybody know where to get the complete Oracle Business Rules Java API Reference ?
The version on http://download-east.oracle.com/docs/cd/B31017_01/web.1013/b28966/toc.htm is incomplete. It is missing the entire "oracle.rules.sdk.ruleset" package.
KiKim,
The oracle.rules.sdk.ruleset package is only for internal operation. The public interface to creating rules is oracle.rules.sdk.editor.ruleset , and this is included in the javadoc. -
Where can I view all Business rules that are currently running
Hi,
I was told that this is available in our Planning v11 but can't find it.
where can I view all processes (such as Business rules) that users are currently running ?
thanks.Hi,
They are probably meaning the job console > Tools > Job console.
More information > http://download.oracle.com/docs/cd/E12825_01/epm.111/hp_user/job_stat.html
Cheers
John
http://john-goodwin.blogspot.com/ -
Dynamic filename in Business Rules
Hi,
I would like to use the DataExport command in my business rules to extract level-0 data in a file as a reference for user. I would need to extract data only for Entities that a user has access to (I figured that I could use parameters, link the rule to a Planning form and use "members" on form).
My problem is that I would need a different filename for each execution. Something like :
..\userABC_20090513_100350_BV_SBQ.txt
..\userDEF_20090513_100430_BV_SLVQ.txt
Is there a way, in business rules, to find the following info ?
- the user who is currently running the rule.
- the current date.
- the current time.
If not, is there a way to include a shell in a business rule. I have a small .exe that return the date or time as an "errorlevel" code that I could use if I can call a shell in the rule.
Finally, a theorical question : is there an other way to ensure that only the user who run the rule can access the generated file (always while using business rules) ?
ThanksFirst, in a well designed data model, I'm not sure I see the need for data validation logic to change regularly. If a particular column cannot be NULL today, it would be rather unlikely that it would somehow need to be NULL tomorrow.
Second, I'm not sure I see what this approach buys you over the much simpler approach of adding and removing check constraints if the data model changes. Adding and removing a constraint is pretty trivial-- orders of magnitude less difficult than doing the analysis to determine what constraint needs to change and what impact that has downstream.
Third, I would suspect that if you need to encode these sorts of constrains in a table, your system will kill downstream systems with regularity. If p1 is NOT NULL today, but tomorrow it suddenly allows NULL values, a consumer application might well break (or worse, silently return incorrect results). Data changes should not be able to screw up downstream systems.
Fourth, if you did build such a system, you would have to build your own constraint validator, rather than being able to rely on Oracle's (unless you wrote code to create and drop Oracle constraints based on values in a table, but that seems rather convoluted). Given that Oracle's constraint validation engine is highly optimmized and highly accurate, a home grown engine isn't going to look particularly good in comparison.
Justin
Distributed Database Consulting, Inc.
http://www.ddbcinc.com/askDDBC -
Where can i find Business rules console in oracle SOA11G?
Hi All,
I am using the business rule component in the SOA 11G.
After deploying my BPEL process i want to edit the values of rule set at run time. i am not able to find any console for business rules like in 10G.
please let me know
Thanks&Regards,
SudhakarSudhakar,
There is no UI provided for rules modification in SOA 11gR1 (11.1.1.1.0). User has to create their own UI by implementing the exposed APIs.
However its available as part of 11gR1 Patchset1 (11.1.1.2.0)
URL would be http://host:soa_port/soa/composer -
Rolling years dynamically updated from a business rule
Hi All,
Can anyone advise on how they have solved the problem of rolling opening balances from one year to another in essbase\planning. Our users could potentially want to forecast out x number of years and we don't want to necessarily hardcode out the business rule with each year. At them moment they are being prompted for the number of years that they will roll out and also the start and end year, they then have a business rule that loops the number of years and then fixes on the year range. This works however it will lead to performance issue going forward as the loop combined with the fix on the range will loop say 25 times for 5 years (5x5) instead of only 5 times.
Has anyone any pointers as to how to restrict this to only a year per pass or has anyone had this problem before ?
Thanks in advanceThanks,
We have prompts in already , the problem is that for our opening balances to flow through we need to calculate one year, then the next, then the next etc... but we don't know each time we run the business rule how many years we will forecast for (it is user dependant). Our code works but it loops on the whole subset of the years in range based on the user selection. -
Hi,
I have a business rule that does some cross dimension multiplication.
I think it is now running into a data problem, as it fails when it has worked consistently for sometime.
Is there anyway to get any diagnostics on what data is being accessed when the script errors??
The only thing I can think of that would cause failure would be an attempt to multiply null or 0, the latter causing a problem because of subsequent complications of rounding the sum of the result back to the original figure - but of course these are only educated guesses as I have no means of knowing what data it choked on - can I find this??
thanks,
Robert.Could try using the Set Msg and Set Notice commands at the outset of your BR?
IE:
SET NOTICE HIGH;
SET MSG DETAIL;
as per
http://docs.oracle.com/cd/E10530_01/doc/epm.931/html_esb_techref/calc/set_msg.htm
http://docs.oracle.com/cd/E12032_01/doc/epm.921/html_techref/calc/set_notice.htm
You might already be aware of these or they might not get you exactly what you want, but may be worth a shot....
Thanks
JB -
Solving "COMMIT business rules" on the database server
Headstart Oracle Designer related white paper
"CDM RuleFrame Overview: 6 Reasons to get Framed"
(at //otn.oracle.com/products/headstart/content.html) says:
"For a number of business rules it is not possible to implement these in the server
using traditional check constraints and database triggers. Below you can find two examples:
Example rule 1: An Order must have at least one Order Line ..."
But, one method exists that allows solving "COMMIT rules" completely on the database level.
That method consists of the possibility of delaying the checking of the declarative constraints (NOT NULL, Primary Key, Unique Key, Foreign Key, Check Constraints) until the commit
(that method was introduced first in the version 8.0.).
E.g. we add the field "num_emps" to the DEPT table, which always has the value of the number
of the belonging EMP rows and add DEFERRED CK which uses the values from that field:
ALTER TABLE dept ADD num_emps NUMBER DEFAULT 0 NOT NULL
UPDATE dept
SET num_emps = (SELECT COUNT (*) FROM emp WHERE emp.deptno = dept.deptno)
DELETE dept WHERE num_emps = 0
ALTER TABLE dept ADD CONSTRAINT dept_num_emps_ck CHECK (num_emps > 0) INITIALLY DEFERRED
Triggers that insure the solving of the server side "COMMIT rules" are fairly simple.
We need a packed variable that is set and reset in the EMP triggers and those value
is read in the bur_dept trigger (of course, we could have place the variable in the package
specification and change/read it directly, thus not needing the package body,
but this is a "cleaner" way to do it):
CREATE OR REPLACE PACKAGE pack IS
PROCEDURE set_flag;
PROCEDURE reset_flag;
FUNCTION dml_from_emp RETURN BOOLEAN;
END;
CREATE OR REPLACE PACKAGE BODY pack IS
m_dml_from_emp BOOLEAN := FALSE;
PROCEDURE set_flag IS
BEGIN
m_dml_from_emp := TRUE;
END;
PROCEDURE reset_flag IS
BEGIN
m_dml_from_emp := FALSE;
END;
FUNCTION dml_from_emp RETURN BOOLEAN IS
BEGIN
RETURN m_dml_from_emp;
END;
END;
CREATE OR REPLACE TRIGGER bir_dept
BEFORE INSERT ON dept
FOR EACH ROW
BEGIN
:NEW.num_emps := 0;
END;
CREATE OR REPLACE TRIGGER bur_dept
BEFORE UPDATE ON dept
FOR EACH ROW
BEGIN
IF :OLD.deptno <> :NEW.deptno THEN
RAISE_APPLICATION_ERROR (-20001, 'Can''t change deptno in DEPT!');
END IF;
-- only EMP trigger can change "num_emps" column
IF NOT pack.dml_from_emp THEN
:NEW.num_emps := :OLD.num_emps;
END IF;
END;
CREATE OR REPLACE TRIGGER air_emp
AFTER INSERT ON emp
FOR EACH ROW
BEGIN
pack.set_flag;
UPDATE dept
SET num_emps = num_emps + 1
WHERE deptno = :NEW.deptno;
pack.reset_flag;
END;
CREATE OR REPLACE TRIGGER aur_emp
AFTER UPDATE ON emp
FOR EACH ROW
BEGIN
IF NVL (:OLD.deptno, 0) <> NVL (:NEW.deptno, 0) THEN
pack.set_flag;
UPDATE dept
SET num_emps = num_emps - 1
WHERE deptno = :OLD.deptno;
UPDATE dept
SET num_emps = num_emps + 1
WHERE deptno = :NEW.deptno;
pack.reset_flag;
END IF;
END;
CREATE OR REPLACE TRIGGER adr_emp
AFTER DELETE ON emp
FOR EACH ROW
BEGIN
pack.set_flag;
UPDATE dept
SET num_emps = num_emps - 1
WHERE deptno = :OLD.deptno;
pack.reset_flag;
END;
If we insert a new DEPT without the belonging EMP, or delete all EMPs belonging to a certain DEPT, or move all EMPs of a certain DEPT, when the COMMIT is issued we get the following error:
ORA-02091: transaction rolled back
ORA-02290: check constraint (SCOTT.DEPT_NUM_EMPS_CK) violated
Disvantage is that one "auxiliary" column is (mostly) needed for each "COMMIT rule".
If we'd like to add another "COMMIT rule" to the DEPT table, like:
"SUM (sal) FROM emp WHERE deptno = p_deptno must be <= p_max_dept_sal"
we would have to add another column, like "dept_sal".
CDM RuleFrame advantage is that it does not force us to add "auxiliary" columns.
We must emphasize that in real life we would not write PL/SQL code directly in the database triggers, but in packages, nor would we directly use RAISE_APPLICATION_ERROR.
It is written this way in this sample only for the code clarity purpose.
Regards
Zlatko SiroticZlatko,
You are right, your method is a way to implement "COMMIT rules" completely on the database level.
As you said yourself, disadvantage is that you need an extra column for each such rule,
while with CDM RuleFrame this is not necessary.
A few remarks:
- By adding an auxiliary column (like NUM_EMPS in the DEPT table) for each "COMMIT rule",
you effectively change the type of the rule from Dynamic (depending on the type of operation)
to a combination of Change Event (for updating NUM_EMPS) and Static (deferred check constraint on NUM_EMPS).
- Deferred database constraints have the following disadvantages:
When something goes wrong within the transaction, then the complete transaction is rolled back, not just the piece that went
wrong. Therefore, it becomes more important to use appropriate commit units.
There is no report of the exact row responsible for the violation nor are further violations either by other rows or of other
constraints reported.
If you use Oracle Forms as a front end application, the errors raised from deferred constraints are not handled very well.
- CDM discourages the use of check constraints. One of the reasons is, that when all tuple rules are placed in the CAPI,
any violations can be reported at the end of the transaction level together with all other rule violations.
A violated check constraint would abort the transaction right away, without the possibility of reporting back other rule violations.
So I think your tip is a good alternative if for some reason you cannot use CDM RuleFrame,
but you'd miss out on all the other advantages of RuleFrame that are mentioned in the paper!
kind regards, Sandra -
Error while executing business rule "Please increase CalcLockBlock setting"
Hello,
An error is occouring when I execute a particular business rule. The following message appears when I view the error from Job Console:
"Dynamic calc processor cannot allocate more than [100] blocks from the heap. Please increase CalcLockBlock setting and then retry"
No such error is occouring when I execute any other business rule.
Can anyone please tell me how to resolve it?
Regards,
Sa'adHi Sa'ad,
in the business rule your getting the error message is a calculation, where the result needs more than 100 blocks to access to.
The error comes from three possible causes:
1. Lockblock setting is low (essbase.cfg)
2. Your data cache setting is to small
3. Block size is to large
I think you have to increase data cache settings (by default 8192 KB) to.
Cheers
Uli
Edited by: Uli Drexelius on 13.07.2011 14:23
Maybe you are looking for
-
This item is currently being modified, please try again later since iTunes9
Hi, I tried to find an answer to this issue believing I wouldn't be the only one to see this, but I could not find the answer to my iTunes issue. I updated to iTunes 9, since I did that, I am unable to buy any Season Pass. I tried with 3 different se
-
Im looking to make a digital proof of my website so that I can email it without having to send the files (I only want to make a digital image - jpg, pdf, etc.), but somehow Acrobat does not seem to be compatible with Dreamweaver! I've tried openi
-
TS3276 code 204 in my yahoo email feed on home page
email not displaying on homepage
-
Problem with photoshop CS6 in my account on my computer. It says: Please uninstall and reinstall the product. If this problem still occurs, please contact Adobe technical support for help, and mention the error code shown at the bottom of this screen
-
Cannot install photoshop or lightroom either the real or trial versions
I cannot get the photography package to install. I have tried for days to get it to work. I started with the trial version and then went to the $9.99 per month photography package. The download has seemed to work multiple times but won't install.. I