1

wso2 bps 2.1.2を使用して、ループ内で1つずつ呼び出されるツリー呼び出しを使用して単純なbpelプロセスを実行しています。ループは約100回です。問題は、プロセスが実行状態でハングすることがあることです。ログにエラーが表示されます:

[2013-03-25 14:44:17,897] ERROR - BpelEngineImpl - Scheduled job failed; jobDetail=JobDetails( instanceId: 14109433 mexId: null processId: null type: TIMER channel: 11513 correlatorId: null correlationKeySet: null retryCount: null inMem: false detailsExt: {})
java.lang.IllegalArgumentException: No such channel; id=11513
    at org.apache.ode.jacob.vpu.ExecutionQueueImpl.findChannelFrame(ExecutionQueueImpl.java:205)
    at org.apache.ode.jacob.vpu.ExecutionQueueImpl.consumeExport(ExecutionQueueImpl.java:232)
    at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.importChannel(JacobVPU.java:369)
    at org.apache.ode.jacob.JacobObject.importChannel(JacobObject.java:47)
    at org.apache.ode.bpel.engine.BpelRuntimeContextImpl$5.run(BpelRuntimeContextImpl.java:964)
    at sun.reflect.GeneratedMethodAccessor44.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
    at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
    at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:879)
    at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.timerEvent(BpelRuntimeContextImpl.java:968)
    at org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:478)
    at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:560)
    at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:445)
    at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:537)
    at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:531)
    at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:284)
    at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239)
    at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:531)
    at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:515)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:314)
    at java.util.concurrent.FutureTask.run(FutureTask.java:149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:897)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919)
    at java.lang.Thread.run(Thread.java:738)

このエラーに関する有用な情報が見つかりません。私はOracleデータベースを使用しています。私はbps.xmlを次のように変更しようとしました:

<tns:OpenJPAConfig>
  <tns:property name="openjpa.FlushBeforeQueries" value="true"/>
  <!-- added this line as for https://wso2.org/jira/browse/CARBON-7500  (use also Oracle 11g Driver!!) -->
  <tns:property name="openjpa.jdbc.DBDictionary" value="oracle(batchLimit=0)"/>
</tns:OpenJPAConfig>

しかし、これは役に立ちませんでした。

プロセスは本当に単純で、次のようになります。

<forEach counterName="count"  parallel="no" >

    < doXslTransform …&gt;
    <wait 1s>
    <invoke ...>

    <doXslTransform …&gt;
    <wait 1s>
    <invoke ...>

    < doXslTransform …&gt;
    <wait 1s>
    <invoke ...>
</forEach>

「そのようなチャネルがありません」エラーを解決するにはどうすればよいですか?

ありがとうトメック

4

2 に答える 2

1

この問題の原因となっている問題を1つ特定し、修正しました。これは、BPSに埋め込まれたodeランタイムにプロセスインスタンスロックがないことが原因でした。この問題を見つけて修正しました。

https://issues.apache.org/jira/browse/ODE-989

https://wso2.org/jira/browse/BPS-218

サンプルシナリオをjiraに添付できる場合は、別のテストケースを追加するのに役立ちます。修正はトランクですでに利用可能であり、次のリリースで利用可能になる予定です。

よろしくナンディカ

于 2013-03-26T15:36:00.333 に答える
0

プロセスから待機を削除しましたが、すべてが問題なく機能し始めました。WSO2BPS2.1.2の<wait>アクティビティにバグがあるようです。BPS 3.0.0では、待機が機能していることを示しています。

于 2013-06-05T09:04:13.903 に答える