[rules-dev] Re: Problem with M2 reading package from Guvnor via RuleAgent

David Sinclair dsinclair at chariotsolutions.com
Wed Oct 1 14:01:12 EDT 2008


Thanks Mark. I did that manually and it worked.

I have a follow up question though. I have automated the process of
updating/creating a package and its assocaited models, enums, import
section, etc. I saw that how the header was stored has changed from on the
package node to a sud-node, but it *appears *that the validate/create
snapshot process may have changed. I used to do the following

1. Validate the package after modification/creation

private void validatePackage(PackageItem rulesPackage) {
        SuggestionCompletionLoader loader = new
SuggestionCompletionLoader();

        List<JarInputStream> jars = getJars(rulesPackage);
        List<String> enums = getEnumerations(rulesPackage);
        String importSection = getImportSection(rulesPackage);

        loader.getSuggestionEngine(importSection, jars, new ArrayList(),
enums);

        if (loader.hasErrors()) {
            StringBuilder sb = new StringBuilder();
            for (Iterator iter = loader.getErrors().iterator();
iter.hasNext();) {
                sb.append((String) iter.next());

                if (iter.hasNext()) {
                    sb.append("\n");
                }
            }

            throw new IllegalStateException("Invalid Package! " +
sb.toString());
        }
    }

2. then  create the snapshot

private void createPackageSnapshot() {
        String snapshots[] =
rulesRepository.listPackageSnapshots(RULE_PACKAGE_NAME);

        // the repo doesn't have an overwrite, so if this snapshot already
exists, we need to remove it before
        // creating it again
        for (String snapshot : snapshots) {

            if (snapshot.equals(cmdbVersion)) {
                rulesRepository.removePackageSnapshot(RULE_PACKAGE_NAME,
cmdbVersion);
                break;
            }
        }

        // create snapshot for this version
        rulesRepository.createPackageSnapshot(RULE_PACKAGE_NAME,
cmdbVersion);

        PackageItem snapshot =
rulesRepository.loadPackageSnapshot(RULE_PACKAGE_NAME, cmdbVersion);
        snapshot.updateCheckinComment("Updated for CMDB Version " +
cmdbVersion);
    }

This used to work fine, i.e.it would result in the binary content of the
package being available.

So, back to my original question, did this change?

thanks much

dave

ps - I have modified my code to now build the compiled package too

On Wed, Oct 1, 2008 at 1:44 PM, Mark Proctor <mproctor at codehaus.org> wrote:

>  When migrating to new versions of Drools you need to rebuild your
> packages, PackageCompilationData does not exist any more.
>
> Mark
> David Sinclair wrote:
>
> Please not that this was a migrated package, so that may be the underlying
> problem
>
> On Wed, Oct 1, 2008 at 12:05 PM, David Sinclair <
> dsinclair at chariotsolutions.com> wrote:
>
>> I have upgrade my application to use the milestone 2 code and am having a
>> problem loading a package from guvnor via the rule agent. I am getting a
>> class not found exception for org.drools.rule.PackageCompilationData. Here
>> is the stack from the app. Looking at the code it appears the
>> PackageCompilationData has been removed.
>>
>> RuleAgent(Drools) INFO (Wed Oct 01 11:55:19 EDT 2008): Configuring with
>> newInstance=false, secondsToRefresh=60
>> RuleAgent(Drools) INFO (Wed Oct 01 11:55:19 EDT 2008): Configuring package
>> provider : URLScanner monitoring URLs:
>> http://localhost:8080/drools-guvnor
>> /org.drools.guvnor.Guvnor/package/com.sungard.cmdb.rules/0.7-SNAPSHOT
>> PackageName: com.sungard.cmdb.rules
>> PackageVersion: 0.7-SNAPSHOT
>> PackageIsLatest: false
>> PackageIsSource: false
>> RuleAgent(Drools) EXCEPTION (Wed Oct 01 11:55:22 EDT 2008):
>> org.drools.rule.PackageCompilationData. Stack trace should follow.
>> java.lang.ClassNotFoundException: org.drools.rule.PackageCompilationData
>>         at
>> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360)
>>         at
>> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206)
>>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>>         at java.lang.Class.forName0(Native Method)
>>         at java.lang.Class.forName(Class.java:247)
>>         at
>> org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:85)
>>         at
>> org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:97)
>>         at
>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
>>         at
>> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
>>         at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>         at
>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>>         at org.drools.rule.Package.readExternal(Package.java:198)
>>         at
>> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1792)
>>         at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1751)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>         at
>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>>         at
>> org.drools.util.DroolsStreamUtils.streamIn(DroolsStreamUtils.java:185)
>>         at
>> org.drools.util.DroolsStreamUtils.streamIn(DroolsStreamUtils.java:154)
>>         at
>> org.drools.agent.HttpClientImpl.fetchPackage(HttpClientImpl.java:47)
>>         at org.drools.agent.URLScanner.readPackage(URLScanner.java:142)
>>         at org.drools.agent.URLScanner.getChangeSet(URLScanner.java:114)
>>         at
>> org.drools.agent.URLScanner.loadPackageChanges(URLScanner.java:90)
>>         at org.drools.agent.RuleAgent.checkForChanges(RuleAgent.java:393)
>>         at org.drools.agent.RuleAgent.refreshRuleBase(RuleAgent.java:345)
>>         at org.drools.agent.RuleAgent.configure(RuleAgent.java:330)
>>         at org.drools.agent.RuleAgent.init(RuleAgent.java:246)
>>         at org.drools.agent.RuleAgent.init(RuleAgent.java:195)
>>         at org.drools.agent.RuleAgent.newRuleAgent(RuleAgent.java:188)
>>         at org.drools.agent.RuleAgent.newRuleAgent(RuleAgent.java:156)
>>
>> thanks
>>
>> dave
>>
>
>  ------------------------------
>
> _______________________________________________
> rules-dev mailing listrules-dev at lists.jboss.orghttps://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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20081001/5a84f246/attachment.html 


More information about the rules-dev mailing list