Russ, I am not sure, but I think there was a bug that crept into RC1 with
eval, that would show up like that, but I can't be sure. RC2 will certainly
correct it.

On 4/8/06, Russ Egan <[EMAIL PROTECTED]> wrote:
>
> Here are my rules:
>
> rule "Authorize Resources"
>     salience 100
>     when
>         $r : Resource()
>         $g : Group(resources contains $r)
>      then
>         AuthorizedResource auth = new AuthorizedResource();
>         auth.resource = $r;
>         assert(auth);
> end
>
> rule "Create block rules for unauthorized resources in same network"
>     when
>         $r : Resource()
>         $pr : Principal()
>         not AuthorizedResource(resource == $r)
>         eval (!Collections.disjoint($r.networks, $pr.networks))
>     then
>         BlockRule block = new BlockRule();
>         block.resource = $r;
>         assert(block);
> end
>
> When AuthorizedResources are asserted by the first rule, I expect that
> activations
> of the second should be cancelled, since it makes the "not" condition
> false.
> But the cancellations don't occur.  Here's the output:
>
> [BeforeActivationFired: rule=Authorize Resources; tuple=[fid:16:16],
> [fid:2:2],
> [fid:7:7], [fid:24:24], ]
> [ObjectAsserted: handle=[fid:25:25]; object=
> [EMAIL PROTECTED]
> [AfterActivationFired(24): rule=Authorize Resources]
> [BeforeActivationFired: rule=Authorize Resources; tuple=[fid:12:12],
> [fid:2:2],
> [fid:7:7], [fid:24:24], ]
> [ObjectAsserted: handle=[fid:26:26]; object=
> [EMAIL PROTECTED]
> [AfterActivationFired(24): rule=Authorize Resources]
> [BeforeActivationFired: rule=Create block rules for unauthorized resources
> in same network; tuple=[fid:12:12], [fid:23:23], ]
> [ObjectAsserted: handle=[fid:27:27]; [EMAIL PROTECTED]
> [AfterActivationFired(23): rule=Create block rules for unauthorized
> resources
> in same network]
> [BeforeActivationFired: rule=Create block rules for unauthorized resources
> in same network; tuple=[fid:8:8], [fid:23:23], ]
> [ObjectAsserted: handle=[fid:28:28]; [EMAIL PROTECTED]
> [AfterActivationFired(23): rule=Create block rules for unauthorized
> resources
> in same network]
> [BeforeActivationFired: rule=Create block rules for unauthorized resources
> in same network; tuple=[fid:5:5], [fid:23:23], ]
> [ObjectAsserted: handle=[fid:29:29]; [EMAIL PROTECTED]
> [AfterActivationFired(23): rule=Create block rules for unauthorized
> resources
> in same network]
> [BeforeActivationFired: rule=Create block rules for unauthorized resources
> in same network; tuple=[fid:1:1], [fid:23:23], ]
> [ObjectAsserted: handle=[fid:30:30]; [EMAIL PROTECTED]
> [AfterActivationFired(23): rule=Create block rules for unauthorized
> resources
> in same network]
>
> However, if I comment out the eval() line, the cancellations do
> occur.  Like
> this:
>
> rule "Create block rules for unauthorized resources in same network"
>     when
>         $r : Resource()
>         $pr : Principal()
>         not AuthorizedResource(resource == $r)
>         #eval (!Collections.disjoint($r.networks, $pr.networks))
>     then
>         BlockRule block = new BlockRule();
>         block.resource = $r;
>         assert(block);
> end
>
> ... I get:
>
> [BeforeActivationFired: rule=Authorize Resources; tuple=[fid:16:16],
> [fid:2:2],
> [fid:7:7], [fid:24:24], ]
> <==[ActivationCancelled(23): rule=Create block rules for unauthorized
> resources
> in same network; tuple=[fid:16:16], [fid:23:23], ]
> [ObjectAsserted: handle=[fid:25:25]; object=
> [EMAIL PROTECTED]
> [AfterActivationFired(24): rule=Authorize Resources]
> [BeforeActivationFired: rule=Authorize Resources; tuple=[fid:12:12],
> [fid:2:2],
> [fid:7:7], [fid:24:24], ]
> <==[ActivationCancelled(23): rule=Create block rules for unauthorized
> resources
> in same network; tuple=[fid:12:12], [fid:23:23], ]
> [ObjectAsserted: handle=[fid:26:26]; object=
> [EMAIL PROTECTED]
> [AfterActivationFired(24): rule=Authorize Resources]
> [BeforeActivationFired: rule=Create block rules for unauthorized resources
> in same network; tuple=[fid:21:21], [fid:23:23], ]
> [ObjectAsserted: handle=[fid:27:27]; [EMAIL PROTECTED]
> [AfterActivationFired(23): rule=Create block rules for unauthorized
> resources
> in same network]
> [BeforeActivationFired: rule=Create block rules for unauthorized resources
> in same network; tuple=[fid:14:14], [fid:23:23], ]
> [ObjectAsserted: handle=[fid:28:28]; [EMAIL PROTECTED]
> [AfterActivationFired(23): rule=Create block rules for unauthorized
> resources
> in same network]
> [BeforeActivationFired: rule=Create block rules for unauthorized resources
> in same network; tuple=[fid:8:8], [fid:23:23], ]
> [ObjectAsserted: handle=[fid:29:29]; [EMAIL PROTECTED]
> [AfterActivationFired(23): rule=Create block rules for unauthorized
> resources
> in same network]
> [BeforeActivationFired: rule=Create block rules for unauthorized resources
> in same network; tuple=[fid:5:5], [fid:23:23], ]
> [ObjectAsserted: handle=[fid:30:30]; [EMAIL PROTECTED]
> [AfterActivationFired(23): rule=Create block rules for unauthorized
> resources
> in same network]
> [BeforeActivationFired: rule=Create block rules for unauthorized resources
> in same network; tuple=[fid:4:4], [fid:23:23], ]
> [ObjectAsserted: handle=[fid:31:31]; [EMAIL PROTECTED]
> [AfterActivationFired(23): rule=Create block rules for unauthorized
> resources
> in same network]
> [BeforeActivationFired: rule=Create block rules for unauthorized resources
> in same network; tuple=[fid:1:1], [fid:23:23], ]
> [ObjectAsserted: handle=[fid:32:32]; [EMAIL PROTECTED]
> [AfterActivationFired(23): rule=Create block rules for unauthorized
> resources
> in same network]
>
> Note how the assertion of the AuthorizedResource now triggers the
> activation
> cancelled.  Am I missing something?
>
>
>
>
>

Reply via email to