jBPM - implementing external User Management like LDAP
ahemaraj Oct 19, 2011 3:45 AMHi,
I am new to JBPM and I am using JBPM 5.1 for building an Application for Workflow. I am trying to use my own User Management like LDAP for the application. For that, I have downloaded SNAPSHOT of jBPM human-task 5.2 module (jbpm-human-task-5.2.0-20111010.064239-423.jar) and I have implemented Interface UserGroupCallback and I have also set the System property "jbpm.usergroup.callback" with the Implemented class.
However, I was not able to assign a user/human task to non-existing user in jBPM server (i.e., I was trying to assign a task to user who existing in LDAP but not in jBPM). I got the following error in jBPM server:
[java] org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
[java] at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)
[java] at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
[java] at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
[java] at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
[java] at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168)
[java] at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
[java] at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
[java] at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
[java] at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
[java] at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
[java] at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
[java] at org.jbpm.task.service.TaskServiceSession.doOperationInTransaction(TaskServiceSession.java:866)
[java] at org.jbpm.task.service.TaskServiceSession.addTask(TaskServiceSession.java:148)
[java] at org.jbpm.task.service.TaskServerHandler.messageReceived(TaskServerHandler.java:109)
[java] at org.jbpm.task.service.mina.MinaTaskServerHandler.messageReceived(MinaTaskServerHandler.java:41)
[java] at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:713)
[java] at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
[java] at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
[java] at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:793)
[java] at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:375)
[java] at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:229)
[java] at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
[java] at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
[java] at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:793)
[java] at org.apache.mina.filter.logging.LoggingFilter.messageReceived(LoggingFilter.java:176)
[java] at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
[java] at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
[java] at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:793)
[java] at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
[java] at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
[java] at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
[java] at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:638)
[java] at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:598)
[java] at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:587)
[java] at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:61)
[java] at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:969)
[java] at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
[java] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
[java] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
[java] at java.lang.Thread.run(Thread.java:662)
[java] Caused by: org.h2.jdbc.JdbcBatchUpdateException: Referential integrity constraint violation: "FK27A9A59E619A0: PUBLIC.TASK FOREIGN KEY(CREATEDBY_ID) REFERENCES PUBLIC.ORGANIZATIONALENTITY(ID)"; SQL statement:
[java] update Task set allowedToDelegate=?, taskInitiator_id=?, priority=?, activationTime=?, actualOwner_id=?, createdBy_id=?, createdOn=?, documentAccessType=?, documentContentId=?, documentType=?, expirationTime=?, faultAccessType=?, faultContentId=?, faultName=?, faultType=?, outputAccessType=?, outputContentId=?, outputType=?, parentId=?, previousStatus=?, processId=?, processInstanceId=?, processSessionId=?, skipable=?, status=?, workItemId=? where id=? [23002-124]
I am using Java 1.6 and OS is Ubuntu 10.10. Could someone please tell me what I am missing here? Do I need to wait for stable version of jBPM 5.2 for implementing my own User Management like LDAP?
Any help is much appreciated.
Thanks,
Hemaraj