Hi,
I use rules together with processes. One global process signals the TurnEvent to other processes in the working memory.

   declare TurnEvent
        @role(event)
   end

Then, when started a process, which waits for TurnEvent another event is signaled - the ProcessWaitsForTurnEvent

   declare ProcessWaitsForTurnEvent
        @role(event)
        processId:Long
   end

signalled in rule

   rule "Build Unit Process Waits For Turn"
        salience 50
        when
            WorkflowProcessInstance(
   getProcessId()=="cz.muni.fi.civ.newohybat.bpmn.buildUnit"
                ,$processId:id
            )
            not ProcessWaitsForTurnEvent(processId==$processId)
        then
            insert(new ProcessWaitsForTurnEvent($processId));
   end


Then there is the last rule which signals each TurnEvent for which there is ProcessWaitsForTurnEvent for a Process:

   rule "Signal New Turn"
        dialect "mvel"
        when
            $pi:ProcessWaitsForTurnEvent(
                $processId:processId
            )
            TurnEvent(this after $pi) from entry-point "GameControlStream"
        then
   kcontext.getKnowledgeRuntime().signalEvent("turn-new",null,$processId);
   end

On my machine, everything works fine.
I tried that also on another, less powerful 32-bit machine and tests fails on following issue. When I run my test case, where I create the process the "Build Unit Process Waits For Turn" fires, ProcessWaitsForTurnEvent is inserted, but then I insert TurnEvent, "Signal New Turn" is not fired. I am quite desperate, cause I have even tried to set @expires attribute for ProcessWaitsForTurnEvent to prevent earlier expiration, with no succes.

Any suggestion appreciated.
Thanks.
Jan
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to