On 22 October 2010 09:14, Ayush <ayush.vatsyayan@alcatel-lucent.com> wrote:

Thank you for your reply.

I think I was heading into the wrong direction. Now when I've synchronized
the function which is creating session, session is static and is only called
once, and firing the rules it's working fine. I'm planning to use JMS
wherein consumer will be syncronized. Is this the right way?

Should be OK.
 

But I've following rule rule

"TwoAlertsFromSameSource"
       no-loop true
       dialect "mvel"
       when
               $RA : AlertReceivedEvent( severity == 2, $entityA : entity ) over
window:time(60s) from entry-point NotificationStream
               $RB : AlertReceivedEvent( this != $RA, severity == 1, $entityB : entity )
over window:time(60s) from entry-point NotificationStream
               $alertB : X733Alert(this.entity == $entityB, correlationState !=
CorrelationStates.ROOT_CAUSE)
               $alertA : X733Alert(this.entity == $entityA, correlationState !=
CorrelationStates.SYMPATHETIC)
       then
               System.out.println("#### Running TwoAlertsFromSameSource... ####");
               modify($alertB) {
                       setCorrelationState("Main");
               }

               System.out.println("correlation state "+$alertB.getCorrelationState());

               modify($alertA) {
                       setCorrelationState("Lower");
               }
end

In above rules it's unable to modify $alertB

This looks fine, and if $alertA is modified, $alertB will be, too -  unless s.th. else
is in error. One possibility is that $alertA and $alertB refer to the same fact and the
2nd modify ovwrites the 1st.
-W