IBM Support

Considerations when moving tokens to subprocesses and linked processes in IBM Business Process Manager (BPM)

Troubleshooting


Problem

A "targetFlowObjectId is invalid" error message might display when tokens move between different business process definitions.

Symptom

Tokens cannot be moved into or out of a subprocess, event subprocess, or linked process.

Cause

For processes to execute correctly, tokens are part of a hierarchy called an execution tree. This execution tree describes the currently executing step and is used to determine the next process element to execute. In some cases, it is not possible to move tokens because the execution tree cannot be reconstructed in a manner that would facilitate correct process execution. In those cases, a "targetFlowObjectId is invalid" error displays and tokens are not moved.

Environment

This issue involves the Process Center or Process Server for IBM Business Process Manager.

Diagnosing The Problem

When you attempt to use the Move Token REST API, it fails, a "targetFlowObjectId is invalid" error message is returned, and a similar exception is found in the AppTarget SystemOut.log file. See the "Managing tokens" links in the Related Links section of this document for a complete description of supported token manipulation operations.

The returned JSON code resembles the following message:


{
  status: "error",
  Data: {
    status: "error",
    exceptionType: "com.ibm.bpm.wle.api.UnexpectedFailureException",
    errorNumber: "CWTBG0019E",
    errorMessage: "CWTBG0019E: Unexpected exception during execution.",
    errorMessageParameters: [
      "targetFlowObjectId is invalid"
    ],
    programmersDetails: "targetFlowObjectId is invalid",
    responses: null
  }
}

The exception resembles the following text:


[12/11/13 11:57:05:385 CST] 000000d0 wle           E   CWLLG2229E: An exception occurred in an EJB call.  Error: targetFlowObjectId is invalid
                                 com.lombardisoftware.core.TeamWorksException: targetFlowObjectId is invalid
at com.lombardisoftware.core.TeamWorksException.asTeamWorksException(TeamWorksException.java:136)
at com.lombardisoftware.bpd.runtime.engine.RoutingAPIHelper.doWithEngine(RoutingAPIHelper.java:213)
at com.lombardisoftware.bpd.runtime.engine.RoutingAPIHelper$1.doExecuteDuringLock(RoutingAPIHelper.java:80)
at com.lombardisoftware.bpd.runtime.engine.RoutingAPIHelper$1.doExecuteDuringLock(RoutingAPIHelper.java:75)
at com.lombardisoftware.bpd.runtime.engine.util.LockBPDInstanceCommand$1.doInTransaction(LockBPDInstanceCommand.java:62)
at com.lombardisoftware.server.core.TXCommand$2.call(TXCommand.java:79)
at com.lombardisoftware.utility.spring.ProgrammaticTransactionSupport.executeInExistingTransaction(ProgrammaticTransactionSupport.java:556)
at com.lombardisoftware.utility.spring.ProgrammaticTransactionSupport.execute(ProgrammaticTransactionSupport.java:286)
at com.lombardisoftware.server.core.TXCommand.executeInDeadlockRetryLoop(TXCommand.java:77)
at com.lombardisoftware.bpd.runtime.engine.util.LockBPDInstanceCommand.execute(LockBPDInstanceCommand.java:74)
at com.lombardisoftware.bpd.runtime.engine.RoutingAPIHelper.routeToken(RoutingAPIHelper.java:75)
at com.lombardisoftware.server.ejb.psapi.RoutingAPIFacadeCore.routeToken(RoutingAPIFacadeCore.java:122)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at com.lombardisoftware.utility.spring.TransactionInterceptor$1.call(TransactionInterceptor.java:52)
at com.lombardisoftware.utility.spring.ProgrammaticTransactionSupport$1.doInTransaction(ProgrammaticTransactionSupport.java:392)
at org.springframework.transaction.jta.WebSphereUowTransactionManager$UOWActionAdapter.run(WebSphereUowTransactionManager.java:306)
at com.ibm.ws.uow.EmbeddableUOWManagerImpl.runUnderNewUOW(EmbeddableUOWManagerImpl.java:786)
at com.ibm.ws.uow.EmbeddableUOWManagerImpl.runUnderUOW(EmbeddableUOWManagerImpl.java:365)
at org.springframework.transaction.jta.WebSphereUowTransactionManager.execute(WebSphereUowTransactionManager.java:252)
at com.lombardisoftware.utility.spring.ProgrammaticTransactionSupport.executeInNewTransaction(ProgrammaticTransactionSupport.java:387)
at com.lombardisoftware.utility.spring.ProgrammaticTransactionSupport.execute(ProgrammaticTransactionSupport.java:257)
at com.lombardisoftware.utility.spring.TransactionInterceptor.invoke(TransactionInterceptor.java:50)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.lombardisoftware.utility.spring.CoreEntryInterceptor.invoke(CoreEntryInterceptor.java:44)
at com.lombardisoftware.utility.spring.PSCoreEntryInterceptor.invoke(PSCoreEntryInterceptor.java:14)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy62.routeToken(Unknown Source)
at com.lombardisoftware.server.ejb.psapi.RoutingAPIFacadeBean$1.execute(RoutingAPIFacadeBean.java:57)
at com.lombardisoftware.server.ejb.psapi.RoutingAPIFacadeBean$1.execute(RoutingAPIFacadeBean.java:55)
at com.lombardisoftware.server.ejb.EjbServerUtils.handleEjbCall(EjbServerUtils.java:90)
at com.lombardisoftware.server.ejb.psapi.RoutingAPIFacadeBean.handleEjbCall(RoutingAPIFacadeBean.java:49)
at com.lombardisoftware.server.ejb.psapi.RoutingAPIFacadeBean.routeToken(RoutingAPIFacadeBean.java:55)
at com.lombardisoftware.server.ejb.psapi.EJSRemoteStatelessRoutingAPIFacade_43f938f5.routeToken(Unknown Source)
at com.lombardisoftware.server.ejb.psapi._RoutingAPIFacadeInterface_Stub.routeToken(_RoutingAPIFacadeInterface_Stub.java:291)
at com.lombardisoftware.client.delegate.RoutingAPIFacadeDelegateDefault$1.run(RoutingAPIFacadeDelegateDefault.java:123)
at java.security.AccessController.doPrivileged(AccessController.java:254)
at com.lombardisoftware.client.delegate.common.WebsphereDelegateHelper.doAsCurrentSubjectContextSensitive(WebsphereDelegateHelper.java:175)
at com.lombardisoftware.client.delegate.RoutingAPIFacadeDelegateDefault.routeToken(RoutingAPIFacadeDelegateDefault.java:120)
at com.ibm.bpm.rest.impl.process.TokenMoveHandler.handleAction(TokenMoveHandler.java:90)
at com.ibm.bpm.rest.impl.process.BusinessProcessDefinitionResource.processMoveToken(BusinessProcessDefinitionResource.java:959)
at com.ibm.bpm.rest.impl.process.BusinessProcessDefinitionResource.postProcessInstanceActions(BusinessProcessDefinitionResource.java:697)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.apache.wink.server.internal.handlers.InvokeMethodHandler.handleRequest(InvokeMethodHandler.java:63)
at org.apache.wink.server.handlers.AbstractHandler.handleRequest(AbstractHandler.java:33)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
at org.apache.wink.server.internal.handlers.CreateInvocationParametersHandler.handleRequest(CreateInvocationParametersHandler.java:54)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
at org.apache.wink.server.handlers.AbstractHandler.handleRequest(AbstractHandler.java:34)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleSubResourceMethod(FindResourceMethodHandler.java:183)
at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleRequest(FindResourceMethodHandler.java:110)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
at org.apache.wink.server.internal.handlers.FindRootResourceHandler.handleRequest(FindRootResourceHandler.java:95)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
at org.apache.wink.server.internal.handlers.HeadMethodHandler.handleRequest(HeadMethodHandler.java:53)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
at org.apache.wink.server.internal.handlers.OptionsMethodWADLHandler.handleRequest(OptionsMethodWADLHandler.java:51)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
at org.apache.wink.server.internal.handlers.SearchResultHandler.handleRequest(SearchResultHandler.java:33)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
at org.apache.wink.server.internal.log.ResourceInvocation.handleRequest(ResourceInvocation.java:92)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
at org.apache.wink.server.internal.log.Requests.handleRequest(Requests.java:76)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:67)
at org.apache.wink.server.handlers.AbstractHandlersChain.run(AbstractHandlersChain.java:52)
at org.apache.wink.server.internal.RequestProcessor.handleRequestWithoutFaultBarrier(RequestProcessor.java:207)
at org.apache.wink.server.internal.RequestProcessor.handleRequest(RequestProcessor.java:154)
at org.apache.wink.server.internal.servlet.RestServlet.service(RestServlet.java:124)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1214)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:774)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:456)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:125)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:92)
at com.ibm.bpm.rest.filter.BPMRestServletFilter.doFilter(BPMRestServletFilter.java:146)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:192)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89)
at com.ibm.bpm.servlet.filters.CompressionFilter.doFilter(CompressionFilter.java:100)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:192)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:926)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1023)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:895)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:276)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1659)
Caused by: java.lang.IllegalArgumentException: targetFlowObjectId is invalid
at com.lombardisoftware.bpd.runtime.engine.RoutingAPIHelper$1$1.call(RoutingAPIHelper.java:153)
at com.lombardisoftware.bpd.runtime.engine.RoutingAPIHelper$1$1.call(RoutingAPIHelper.java:80)
at com.lombardisoftware.bpd.runtime.engine.RoutingAPIHelper.doWithEngine(RoutingAPIHelper.java:206)
... 129 more

Exact line numbers vary depending on product version, the specific scenario, and the operation being performed. The most important diagnostic indicators are:
  • A TeamWorksException or IllegalArgumentException with a targetFlowObjectId is invalid message.
  • An invocation of the routeToken method as defined in either RoutingAPIHelper or RoutingAPIFacade.

Resolving The Problem

Moving tokens from the child to parent processes

If you want to move a token from a subprocess, event subprocess, or linked process "up" to the parent containing process, move the parent token instead of the child token. In the following scenario, Token #2 is in the containing Parent Process diagram, whereas Token #5 is a "child" token in the subprocess.




If you try to move token #5 instead of the parent, a "targetFlowObjectId is invalid" error might occur.


Moving tokens from the parent to child processes

To move a token from a parent containing subprocess, event subprocess, or linked subprocess "down" to a process element within a child process, first move the parent token to the top-level activity that represents the process. Then, move the token within the child process.


For example, you might want to move Token #2 from Activity to step B inside the Linked Process that is labeled "Subprocess." See the following screen captures:






You must move the token to the "Linked Process" step, wait for a new token to be created inside the linked process, and then move the token to the desired step within the linked process. See the following screen capture:



Then, move the resulting Token #6 to the desired step "B" as shown in the following screen capture:

[{"Product":{"code":"SSFTDH","label":"IBM Business Process Manager Standard"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"REST API","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"8.5;8.0.1;8.0;7.5.1;7.5","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}},{"Product":{"code":"SSFTBX","label":"IBM Business Process Manager Express"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"REST API","Platform":[{"code":"PF016","label":"Linux"},{"code":"","label":"Linux zSeries"},{"code":"PF033","label":"Windows"}],"Version":"8.5;8.0.1;8.0;7.5.1;7.5","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}},{"Product":{"code":"SSFTN5","label":"IBM Business Process Manager Advanced"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"REST API","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF016","label":"Linux"},{"code":"","label":"Linux zSeries"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"},{"code":"PF035","label":"z\/OS"}],"Version":"8.5;8.0.1;8.0;7.5.1;7.5","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Product Synonym

BPM

Document Information

Modified date:
15 June 2018

UID

swg21659810