Class SupplierCode {private String code;private SupplierView parent;public SubString(SupplierView parent, String code) {this.code = code;this.parent = parent;}public String getCode() {return this.code;}public SupplierView getParent() {return this.parent;}}rule "suppliercode"when$sv : SupplierView( $sc : suppCode )theninsert(new SupplierCode($sv, $sc.substring(4, 6)));endrule "main"when$sv : SupplierView(corporate == true)$sc : SupplierCode( code in ('25, '30'), parent == $cs )thenValidationErrorFacade.getInstance().registerError($cs, new ValidationError("Headquarter Supplier Code should end on 25 or 30."));end
From: rules-users-bounces@lists.jboss.org [mailto:rules-users-bounces@lists.jboss.org] On Behalf Of Manukyan, Sergey
Sent: 12 July 2007 21:40
To: Rules Users List
Subject: RE: [rules-users] how to create local variableThank you Edson,
I liked the solution with matches, it is much cleaner….
-Sergey
From: rules-users-bounces@lists.jboss.org [mailto:rules-users-bounces@lists.jboss.org] On Behalf Of Edson Tirelli
Sent: Thursday, July 12, 2007 4:19 PM
To: Rules Users List
Subject: Re: [rules-users] how to create local variable
It is not possible to assign the result of an arbitrary method call to a variable right now. So, your best option is probably to do (please note the use of inline-eval):rule "SupplierView: Headquarter Supplier Code should end on 25 or 30."
when
$cs : SupplierView(corporate == true, eval( suppCode.substring(4, 6).equals( "25" ) || suppCode.substring(4, 6).equals( "30" ) ) )
then
ValidationErrorFacade.getInstance().registerError($cs, new ValidationError("Headquarter Supplier Code should end on 25 or 30."));
end
A more clean solution is to use "matches" operator. If your rule states that Supplier Code must END with 25 or 30, you can do:rule "SupplierView: Headquarter Supplier Code should end on 25 or 30."
when
$cs : SupplierView(corporate == true, suppCode matches ".*25" || matches ".*30" )
then
ValidationErrorFacade.getInstance().registerError($cs, new ValidationError("Headquarter Supplier Code should end on 25 or 30."));
end
Hope it helps.
[]s
Edson2007/7/12, Manukyan, Sergey < SManukyan@lear.com>:
Folks,
I have a rule where I am repeating part of it twice : ($cs.getSuppCode().substring(4, 6)), and I would like to replace it with variable… how can I do that? The solution with "in" doesn't worl because it is a java code needed to perform calculations for variable…..
Please see the rule below:
rule "SupplierView: Headquarter Supplier Code should end on 25 or 30."
when
$cs : SupplierView(corporate == true)
eval($cs.getSuppCode().substring(4, 6) == "25" || $cs.getSuppCode().substring(4, 6) == "30")
then
ValidationErrorFacade.getInstance().registerError($cs, new ValidationError("Headquarter Supplier Code should end on 25 or 30."));
end
Thanks,
-Sergey
**********************
** LEGAL DISCLAIMER **
**********************
This E-mail message and any attachments may contain
legally privileged, confidential or proprietary
information. If you are not the intended recipient(s),
or the employee or agent responsible for delivery of
this message to the intended recipient(s), you are
hereby notified that any dissemination, distribution
or copying of this E-mail message is strictly
prohibited. If you have received this message in
error, please immediately notify the sender and
delete this E-mail message from your computer.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @ www.jboss.com