I have a simple rule flow of the form:
Start -> Work Item -> Wait State -> Action -> End.
The handler for the work item launches
a separate thread, and then completes. This thread inserts a number of
facts into the (stateful) session's working memory; each fact ('SimpleFact')
has a boolean property ('complete') that is initially set false. Later
on in the thread, the facts in memory are updated by setting their 'complete'
properties to true.
I want the Wait State to hold execution
of the rule flow until ALL the facts in memory have the 'complete' property
set to true. My first attempt at setting the constraint was as follows:
forall(SimpleFact(complete == true))
With this constraint, the Action node
executes straight after the completion of the Work Item. My next attempt
for the constraint was:
exists(SimpleFact()) and forall(SimpleFact(complete
== true))
With this constraint, the Action node
executes as soon as the first instance of SimpleFact is inserted into the
working memory.
So my question is: how do I specify
the Wait State node constraint so that the rule flow only resumes once
all the SimpleFact instances in working memory have their 'complete' property
set to true?
(I have a simple project to demonstrate
the problem if required.)
Many thanks,
Alan