intra-mart IM-Workflow トラブルシューティング 第21版 2023-04-01

4.26. 自動処理でエラーが発生する


4.26.1. 自動承認時にスレッドタスク実行の例外が発生する

対象バージョン

  • iWP / iAF の場合

    • 対象外
  • intra-mart Accel Platform の場合

    • 2014 Winter(Iceberg) IM-Workflow 8.0.9

現象

到達処理で下記の自動承認プログラムが実行され、案件の承認が行われた際に、スレッドタスク実行の例外が発生します。
  • 既処理者自動承認
  • 再処理自動承認
  • 連続自動承認

条件

  • 処理時にログが出力される

    [ERROR] j.c.i.s.w.e.WorkflowExceptionDispatcher - [] [0] 未完了タスク情報が存在しないため、処理依頼IMBoxデータ作成に失敗しました。ノードID(hzs9uhg5njuuy93)
    [ERROR] j.c.i.s.w.e.WorkflowExceptionDispatcher - [] [1] IMBox送信用データ作成で失敗しました。
    
  • 事象の発生時刻に該当する例外ログに下記のようなスタックトレースが出力されている

    log.message=[Engine - Thread]スレッドタスク実行で例外が発生しました。
    
    jp.co.intra_mart.foundation.workflow.exception.WorkflowException: jp.co.intra_mart.system.workflow.engine.common.EngineException: jp.co.intra_mart.system.workflow.engine.common.EngineException
       at jp.co.intra_mart.system.workflow.engine.thread.WorkflowThreadExceptionHandlerImpl.execute(WorkflowThreadExceptionHandlerImpl.java:25)
       at jp.co.intra_mart.system.workflow.internal.manager.message_hub.TemplateMessageHubSendManager.executeMessageHubTask(TemplateMessageHubSendManager.java:105)
       at jp.co.intra_mart.system.workflow.internal.manager.message_hub.TemplateMessageHubSendManager.sendProcessMessageHub(TemplateMessageHubSendManager.java:79)
       at jp.co.intra_mart.system.workflow.engine.thread.task.ArrivedProcessTask.execute(ArrivedProcessTask.java:172)
       at jp.co.intra_mart.system.workflow.engine.thread.WorkflowThreadRunner.execute(WorkflowThreadRunner.java:121)
       at jp.co.intra_mart.system.workflow.engine.thread.WorkflowThreadRunner.run(WorkflowThreadRunner.java:68)
       at jp.co.intra_mart.system.asynchronous.impl.executor.work.ExecutableWrapper.run(ExecutableWrapper.java:89)
       at com.caucho.jca.ra.WorkThread.run(WorkThread.java:87)
       at com.caucho.env.thread2.ResinThread2.runTasks(ResinThread2.java:173)
       at com.caucho.env.thread2.ResinThread2.run(ResinThread2.java:118)
    Caused by: jp.co.intra_mart.system.workflow.engine.common.EngineException: jp.co.intra_mart.system.workflow.engine.common.EngineException
       at jp.co.intra_mart.system.workflow.engine.thread.task.TemplateImBoxSendTask.createReplaceMap(TemplateImBoxSendTask.java:344)
       at jp.co.intra_mart.system.workflow.engine.thread.task.TemplateMessageHubSendTask.execute(TemplateMessageHubSendTask.java:92)
       at jp.co.intra_mart.system.workflow.internal.manager.message_hub.TemplateMessageHubSendManager.executeMessageHubTask(TemplateMessageHubSendManager.java:100)
       ... 8 more
    Caused by: jp.co.intra_mart.system.workflow.engine.common.EngineException
       at jp.co.intra_mart.system.workflow.engine.thread.task.TemplateImBoxSendTask.createProcessImBoxReplaceMap(TemplateImBoxSendTask.java:999)
       at jp.co.intra_mart.system.workflow.engine.thread.task.TemplateImBoxSendTask.createReplaceMap(TemplateImBoxSendTask.java:325)
       ... 10 more
    

原因

製品の不具合です。
IM-MessageHub による通知を行う際、テンプレート置換文字列を内部で保持しておく必要がありますが、自動承認の場合に正しく保持できず、例外が発生します。

コラム

当トラブルによって案件の状態が不整合となることはありません。

以下の要件で対応を行っています。

  • iWP / iAF の場合

    • 対象外
  • intra-mart Accel Platform の場合

    • バグ #2680 到達処理で自動承認を行うとイベント通知に失敗します。

解決方法

以下のパッチまたはアップデートを適用することで解決します。
  • iWP / iAF の場合

    • 対象外
  • intra-mart Accel Platform の場合

    • 2015 Spring(Juno) IM-Workflow 8.0.10

回避方法

自動承認対象のノードの到達処理として、別途ユーザプログラムを追加します。
追加するユーザプログラムでは、返却値「メール送信可否」として false を返却してください。
このようにすることで、自動承認対象のノードに到達した際に送信される「処理依頼」通知が実行されないよう制御され、当トラブルの発生を回避することができます。
なお、自動承認プログラムとトラブル回避用ユーザプログラムは、どちらが先に実行されても構いません。

コラム

自動承認が行われた結果として到達するノードにおいては、通知処理は通常通り実行されます。

注意

この回避方法の場合、「根回し」通知も送信されなくなります。

復旧方法

ありません。