[jboss-user] [jBPM] - java.lang.IllegalArgumentException: attempt to create merge event with null entity

Xiaojun Hou do-not-reply at jboss.com
Mon Jul 11 03:43:05 EDT 2011


Xiaojun Hou [http://community.jboss.org/people/houxiaojun] created the discussion

"java.lang.IllegalArgumentException: attempt to create merge event with null entity"

To view the discussion, visit: http://community.jboss.org/message/614347#614347

--------------------------------------------------------------
In my project,i use the code below to configure the persistence:

try {
            PoolingDataSource ds = new PoolingDataSource();
            ds.setUniqueName("jdbc/testDS");
            ds.setClassName("com.mysql.jdbc.jdbc2.optional.MysqlXADataSource");
            ds.setMaxPoolSize(3);
            ds.setAllowLocalTransactions(true);
            ds.getDriverProperties().put("user", "root");
            ds.getDriverProperties().put("password", "root");
            ds.getDriverProperties().put("URL", "jdbc:mysql://localhost:3306/jbpm5");
            ds.init();
            // load up the knowledge base
            KnowledgeBase kbase = readKnowledgeBase();
            // start a new process instance
            EntityManagerFactory emf = Persistence
                    .createEntityManagerFactory("org.jbpm.persistence.jpa");
            Environment env = KnowledgeBaseFactory.newEnvironment();
            env.set(EnvironmentName.ENTITY_MANAGER_FACTORY,
                    emf);
            env.set(EnvironmentName.TRANSACTION_MANAGER,
                    TransactionManagerServices.getTransactionManager());

            // create a new knowledge session that uses JPA to store the runtime
            // state
            StatefulKnowledgeSession ksession=null;
            ksession= JPAKnowledgeService.newStatefulKnowledgeSession(
                    kbase,
                    null,
                    env);

            JPAWorkingMemoryDbLogger logger = new JPAWorkingMemoryDbLogger(ksession);
            ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new WSHumanTaskHandler());
            // start a new process instance
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("employee", "krisv");
            ksession.startProcess("com.sample.evaluation",params);

            logger.dispose();
} catch (Throwable t) {
            t.printStackTrace();
        }

However,when i start a new processinstance(I have three task in my process) and try to complete the first task,exception happens just like this:

Registered human task listener
[2011:06:167 10:06:520:debug] Message receieved on client : AddTaskResponse
[2011:06:167 10:06:520:debug] Arguments : [1]
[2011:06:167 10:06:324:debug] Message receieved on client : EventTriggerResponse
[2011:06:167 10:06:324:debug] Arguments : [org.jbpm.task.event.EventPayload at b98a06]
Task completed 1
[2011:06:167 10:06:609:debug] Message receieved on client : GetTaskResponse
[2011:06:167 10:06:609:debug] Arguments : [org.jbpm.task.Task at 2a7159ce]
[2011:06:167 10:06:610:exception] Uncaught exception on client
java.lang.IllegalArgumentException: attempt to create merge event with null entity
    at org.hibernate.event.MergeEvent.<init>(MergeEvent.java:60)
    at org.hibernate.event.MergeEvent.<init>(MergeEvent.java:43)
    at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:688)
    at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:692)
    at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:235)
    at org.drools.persistence.jpa.JpaPersistenceContext.merge(JpaPersistenceContext.java:49)
    at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.abortWorkItem(JPAWorkItemManager.java:136)
    at org.jbpm.process.workitem.wsht.WSHumanTaskHandler$GetCompletedTaskResponseHandler.execute(WSHumanTaskHandler.java:249)
    at org.jbpm.task.service.TaskClientHandler.messageReceived(TaskClientHandler.java:81)
    at org.jbpm.task.service.mina.MinaTaskClientHandler.messageReceived(MinaTaskClientHandler.java:47)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:713)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:793)
    at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:375)
    at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:229)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:793)
    at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:638)
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:598)
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:587)
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:61)
    at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:969)
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)


After the exception,the task stored in the database has a "completed" status,Can somebody help me to solve the problem?
--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/614347#614347]

Start a new discussion in jBPM at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20110711/7e184754/attachment.html 


More information about the jboss-user mailing list