Hey guys (Drools newbie here)

I'm *attempting* to use the Drools/Smooks pipeline functionality to insert facts into my knowledgebase and I'm having a little trouble figuring out exactly how to do this. I've read the API docs for the 5.0.0.M5 and looked at the test cases but I guess I'm still not quite getting it, so I'm hoping someone here can point me in the right direction.

I've got an XML file defined basically like this:

<submission>
   <facility>
      <faccode>xxx</faccode>
   </facility>
   <lineitem>
      <acctcode>xxxx</acctcode>
      <amount>999</amount>
   <lineitem>
   <lineitem>
      <acctcode>xxxx</acctcode>
      <amount>999</amount>
   <lineitem>
<submission>

Within the XML file, there is 1 and only 1 "facility" node and multiple "lineitem" nodes. I'd like to use the DroolsSmooks pipleline functionality to use Smooks to insert 1 "facility" fact and multiple "lineitem" facts into my knowledgbase.

The code I've written to do this is similar to the following (taken from sample test code I've seen in the Drools source):

StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
insertStage.setReceiver(executeResultHandler);
Smooks smooks = new Smooks("smooks-config.xml");
Transformer transformer = PipelineFactory.newSmooksFromSourceTransformer(smooks, "root");
transformer.setReceiver(insertStage);
Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline(ksession);
pipeline.setReceiver(transformer);
ResultHandlerImpl resultHandler = new ResultHandlerImpl();
pipeline.insert(ResourceFactory.newClassPathResource("submission.xml"), resultHandler );

While stepping through the above code, the last line returns an NPE. I've tried playing with the "Transformer transformer - PipeLineFactory…" line, substituting "root" for something else and it goes into an infinite loop. What is the purpose of the "root" value being set in this line?

Can anyone tell me if I'm even on the right track here, or am I misunderstanding what the Smooks data loader can do for me?

Regards,

Dave