Hi all,
I know this is an old topic, but I'll add my experience here, to help anyone else whom has had the same problem.
I too had this problem, the drool rule was coded to update the obejct passed in, but back in the java code I could
not see the update.
It turns out, (unexpectedly in my mind) that the rule returns a different object reference. Using the api available in the examples to return the object from the rule, inside ruleOutputList is a new reference with the correct updates therein.
<code>
Collection<Object> ruleOutputList = (Collection<Object>) activitiRule.getRuntimeService().
getVariable(processInstance.getId(),"rulesOutput");
</code>
I had assumed that the instances in the process variable map 'vars' (shown below) would be updated by the rule, and available for my perusal after the rule had run.
<code>
CardApplication cardApp = new CardApplication();
cardApp.setName("Miss Piggy");
ProcessInstance processInstance = activitiRule.getRuntimeService().startProcessInstanceByKey("financialReportWithNoddyRule", vars);
</code>