[rules-dev] Why are fundamental API functions not part of "stable"?
Mark Proctor
mproctor at codehaus.org
Fri Aug 20 15:56:50 EDT 2010
On 20/08/2010 20:26, Wolfgang Laun wrote:
> Please don't keep telling me to do something that can't be done.
>
> import org.drools.runtime.StatefulKnowledgeSession;
> import org.drools.KnowledgeBase;
> import org.drools.definition.KnowledgePackage;
>
> public List<String> getRuleNamesFromPackage( String kPackageName ){
> List<String> nameList = new ArrayList<String>();
> for( KnowledgePackage knowledgePackage:
> session.getKnowledgeBase().getKnowledgePackages() ){
> if( kPackageName == null || kPackageName.equals(
> knowledgePackage.getName() ) ){
> for( org.drools.definition.rule.Rule rule: knowledgePackage.getRules() ){
> org.drools.rule.Rule odrRule = (org.drools.rule.Rule)rule;
> //<<<<< line 155: try a cast to get rule's agenda
> nameList.add( rule.getName() );
> }
> }
> }
> return nameList;
> }
>
> Exception in thread "main" java.lang.ClassCastException:
> org.drools.definitions.rule.impl.RuleImpl cannot be cast to
> org.drools.rule.Rule
> at rss.checker.engine.impl.DroolsEngine.getRuleNamesFromPackage(DroolsEngine.java:155)
> at rss.checker.engine.impl.DroolsEngine.getRuleNames(DroolsEngine.java:165)
> at rss.checker.init.Main.exec(Main.java:51)
> at rss.checker.init.Main.main(Main.java:68)
try this:
for ( KnowledgePackage pkg : kbase.getKnowledgePackages() ) {
for ( org.drools.definition.rule.Rule rule : pkg.getRules() ) {
String name = rule.getName();
org.drools.rule.Rule realRule = ( org.drools.rule.Rule
) ((KnowledgePackageImp)pkg).getRule( name );
System.out.println( realRule.getAgendaGroup() );
}
}
>
> There's lots of rules around that have agenda-group "whatever". ARE
> YOU PLANNING TO ABOLISH THIS????
At the drl it'll stay, for backwards comptability for a while, we'll map
it onto the new planned constructs. I have plans over all for something
more generic, orthogonal and thus more flexible and powerful.
> I ONLY WANT TO GET BACK WHAT I WROTE ACCORDING TO THE CURRENTLY VALID
> DOCUMENTATION!!!
See code paste above.
Mark
> -W
>
>
> On 20 August 2010 20:30, Mark Proctor<mproctor at codehaus.org> wrote:
>> On 20/08/2010 17:21, Wolfgang Laun wrote:
>>> Please note that I am and was well aware of org.drools.rule.Rule. But this isn't
>>> available from what you get via StatefulKnowledgeSession, KnowledgeBasae,
>>> KnowledgePackage. See below.
>> I want to compltely change agenda-groups, ruleflow-groups,
>> activation-groups etc.
>>
>> In the same way you'll be reluctant to want to use internal methods as
>> they will change over time. I'm reluctant to expose internal things that
>> I know I want to change in the near term. We have to support those apis
>> for 5 years.
>>
>> Can you caste for now to try and solve your problem? The information is
>> there if you caste to org.drools.rule.Rule. We are working on pushing
>> more things out of core and compiler over time as we feel confident in
>> exposing those things. But it takes time and we are conservative in
>> this, as we want to avoid doing anything that makes future changes hard.
>>
>> Mark
>>> On 20 August 2010 17:46, Mark Proctor<mproctor at codehaus.org> wrote:
>>>> On 20/08/2010 11:13, Wolfgang Laun wrote:
>>>>> StatefulKnowledgeSession session = ...;
>>>>> for( KnowledgePackage knowledgePackage:
>>>>> session.getKnowledgeBase().getKnowledgePackages() ){
>>>>> for( Rule rule: knowledgePackage.getRules() ){
>>>>> ???
>>>>>
>>>>> but it turns out that this "rule" object is of the interface type
>>>>> org.drools.definition.rule.Rule
>>>>> implemented by
>>>>> org.drools.definitions.rule.impl.Rule
>>>>> which is just as meagre as the interface. Dead end, apparently.
>>>> You looked at the wrong implementation. Notice that Rule is also
>>>> implemented by org.drools.rule.Rule. That one has the meat you need.
>>>>
>>> This is what I wrote:
>>>
>>>>> Using other classes like Package or RuleBase from the "unstable" part
>>>>> of the API to get at
>>>>> the "real meat" in org.drools.rule.Rule isn't really a way I want to go.
>>>>>
>>> _______________________________________________
>>> rules-dev mailing list
>>> rules-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>>
>>>
>>
>> _______________________________________________
>> rules-dev mailing list
>> rules-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>
>
More information about the rules-dev
mailing list