users@glassfish.java.net

Re: JCA question regarding transactions

From: <glassfish_at_javadesktop.org>
Date: Tue, 15 Jun 2010 17:15:40 PDT

OK. Code typed from memory, so forgive the inevitable syntax errors. I hope it conveys what I'm trying to do.
[code]
@Stateless
public class MyBean implements SomeInterface {

  @Resource
  private KnowledgeBase kb; // Provided by Drools resource adapter

  @PersistenceContext
  private EntityManager em;

  @Override
  public void someMethod(final SomeObject gunk) {
    assert kb != null;
    assert em != null;
    final StatefulKnowledgeSession sks = kb.newStatefulKnowledgeSession();
    assert sks != null;
    try {
      sks.setGlobal("entityManager", em);
      sks.insert(gunk);
      sks.fireAllRules();
      // do other stuff, maybe
    } finally {
      sks.dispose();
    }
  }

}[/code]

Then in rules land, you can make use of the entity manager:

[code]
when
  $fact : SomeObject()
then
  // get em from globals
  em.persist(new FrobnicationResult());
[/code]

Best,
Laird
[Message sent by forum member 'ljnelson']

http://forums.java.net/jive/thread.jspa?messageID=474412