Troubleshooting
Problem
When a child process responds to the parent, the fAssertion violation !(Key not unique for ProcessInstanceB) error occurs.
Symptom
The following errors usually occur when a process has multiple long-running child processes.:
com.ibm.bpe.util.ProcessAssertionError: Assertion violation !(Key not unique for ProcessInstanceB) in method >> com.ibm.bpe.database.ProcessInstanceB.selectDbByParentAIID(ProcessInstanceB.java:614) <<
at com.ibm.bpe.util.Assert.assertion(Assert.java:70)
at com.ibm.bpe.database.ProcessInstanceB.selectDbByParentAIID(ProcessInstanceB.java:614)
at com.ibm.bpe.database.Tom.getSubProcessInstanceB(Tom.java:10448)
at com.ibm.bpe.engine.BpelActivityKindInvoke.processAsynchronousResponse(BpelActivityKindInvoke.java:1256)
at com.ibm.bpe.engine.BpelActivityStateRunning.processAsynchronousResponse(BpelActivityStateRunning.java:93)
at com.ibm.bpe.engine.BpelEngineCore.processAsynchronousResponseMessage(BpelEngineCore.java:1230)
at com.ibm.bpe.engine.BpelAsynchronousResponseEngineMessage.execute(BpelAsynchronousResponseEngineMessage.java:86)
at com.ibm.bpe.engine.BpelEngine.onMessage(BpelEngine.java:1464)
at com.ibm.bpe.framework.sca.ProcessImplementationHandler.bpc_onMessage(ProcessImplementationHandler.java:595)
Resolving The Problem
This problem occurs when the transaction boundaries are not set properly in the Business Process Execution Language (BPEL) process. A limitation requires that when the process invokes another BPEL process, the corresponding invoke activity must not be part of the transaction that initiates the process. You can achieve this by setting the transaction behavior attribute in one of the following ways:
- Set the attribute of the receive or receive choice activity to Commit after.
- Set the attribute of the invoke activity to Commit before or Requires own.
Was this topic helpful?
Document Information
Modified date:
23 June 2018
UID
swg21406201