intra-mart IM-Workflow トラブルシューティング 第12版 2017-08-01

4.2. 処理できない


4.2.1. 申請や承認の際に「一時領域のディレクトリが見つかりません」というエラーが発生する

対象バージョン

  • iWP / iAF の場合

    • IM-Workflow 7.2.0 ~ 最新バージョン
  • intra-mart Accel Platform の場合

    • 2012 Autumn(Alba) IM-Workflow 8.0.1 ~ 2016 Spring(Maxima) IM-Workflow 8.0.13

現象

申請や承認の際に、画面上に『申請に失敗しました。』『処理に失敗しました。』というエラーメッセージが表示されます。

条件

  • 別PCや、同一ブラウザの複数タブにて、同一ユーザコードで複数ログインを行い、 IM-Workflow の処理画面を表示している

  • 事象の発生時刻に該当する例外ログに下記のようなスタックトレースが出力されている

    log.message=一時領域のディレクトリが見つかりません。
    
    jp.co.intra_mart.foundation.workflow.exception.WorkflowApiException
       at jp.co.intra_mart.system.workflow.internal.manager.attachfile.AttachFileManager.checkDirectory(AttachFileManager.java:350)
       at jp.co.intra_mart.system.workflow.internal.manager.attachfile.AttachFileManager.addFileToTemp(AttachFileManager.java:144)
       at jp.co.intra_mart.foundation.workflow.util.WorkflowAttachFileManager.addFileToTemp(WorkflowAttachFileManager.java:116)
       at jp.co.intra_mart.system.workflow.javascript.util.WorkflowAttachFileManagerObject.jsFunction_addFileToTemp(WorkflowAttachFileManagerObject.java:211)
    
       (省略)
    

原因

製品の仕様です。

添付ファイルの一時アップロード先ディレクトリは、ユーザ単位で一意となっています。
別PCや、同一ブラウザの複数タブにて、同一ユーザコードで複数ログインを行い、 IM-Workflow の処理画面を表示すると、添付ファイルの一時アップロード先ディレクトリの初期化が不正に実行されるため、当事象が発生します。
上記の操作は、リリースノートの制限事項に、サポート対象外であることが明記されています。

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

  • iWP / iAF の場合

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

    • 要件 #1192 添付ファイルの一時領域ディレクトリをSessionScopeStorageに変更します。

解決方法

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

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

    • 2016 Summer(Nirvana) IM-Workflow 8.0.14

回避方法

サポート対象外となるため、上記の操作を行わないでください。

復旧方法

一覧画面から対象の操作を再度やり直してください。

4.2.2. 初期ソート条件に案件プロパティを指定すると、案件に対する処理が実行できない

対象バージョン

  • iWP / iAF の場合

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

    • 2013 Summer(Damask) IM-Workflow 8.0.4

現象

以下の一覧を表示し、案件に対する処理用アイコンをクリックしたとき、ユーザコンテンツ画面の表示は行われるがサーバで例外が発生し、案件の処理が実行できません。
  • 一時保存一覧(「申請」アイコンの押下時)
  • 未処理一覧(「処理」アイコンの押下時)
  • 未処理 - 連続処理一覧(「連続処理開始」アイコンの押下時)
  • 確認一覧(「確認」アイコンの押下時)
  • 確認 - 連続確認一覧(「連続確認開始」アイコンの押下時)

条件

  • 対象の一覧画面に対する一覧表示パターン定義にて、案件プロパティを第1初期ソート条件として設定している

  • 事象の発生時刻に該当する例外ログに下記のようなスタックトレースが出力されている

    (省略)
    log.message=引数が不正です。
    
    jp.co.intra_mart.foundation.workflow.exception.WorkflowApiException: Unexpected character (u) at position 160.
       at jp.co.intra_mart.system.workflow.taglib.WorkflowOpenPage.getStartTagData(WorkflowOpenPage.java:555)
       at jp.co.intra_mart.system.workflow.taglib.imarttag.ImartTag4WorkflowOpenPage.doTag(ImartTag4WorkflowOpenPage.java:74)
       at jp.co.intra_mart.system.javascript.imapi.ImartTagTypeManager.invoke(ImartTagTypeManager.java:200)
       at jp.co.intra_mart.system.javascript.imapi.ImartObject.callFunction(ImartObject.java:70)
       at jp.co.intra_mart.system.javascript.imapi.ImartObject.callFunction(ImartObject.java:55)
       at jp.co.intra_mart.system.jssp.script.view.ImartTag.execute(ImartTag.java:157)
       at jp.co.intra_mart.system.jssp.script.view.Composition.execute(Composition.java:237)
    
    (省略)
    
    Caused by: Unexpected character (u) at position 160.
       at org.json.simple.parser.Yylex.yylex(Unknown Source)
       at org.json.simple.parser.JSONParser.nextToken(Unknown Source)
       at org.json.simple.parser.JSONParser.parse(Unknown Source)
       at org.json.simple.parser.JSONParser.parse(Unknown Source)
       at org.json.simple.parser.JSONParser.parse(Unknown Source)
       at org.json.simple.JSONValue.parseWithException(Unknown Source)
       at jp.co.intra_mart.system.workflow.taglib.WorkflowOpenPage.getStartTagData(WorkflowOpenPage.java:553)
       ... 70 more
    

原因

製品の不具合です。
画面一覧ヘッダ情報を生成する処理にて、案件プロパティのカラムIDとカラム名に対する、プリフィックス付加処理の実装が漏れているためです。
以下の要件で対応を行っています。
  • iWP / iAF の場合

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

    • 要件 [20477] 案件プロパティのキーに数字を登録すると、一覧表示できません。

解決方法

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

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

    • 2013 Autumn(Eden) IM-Workflow 8.0.5

回避方法

一覧表示パターン定義にて、第1初期ソート条件には案件プロパティ以外の項目を指定してください。

復旧方法

ありません。

4.2.3. 承認ノードの処理時に「処理に失敗しました」が発生して処理できない

対象バージョン

  • iWP / iAF の場合

    • IM-Workflow 7.2.0 ~ IM-Workflow 7.2.6
  • intra-mart Accel Platform の場合

    • 2012 Autumn(Alba) IM-Workflow 8.0.1 ~ 2012 Winter(Bourbon) IM-Workflow 8.0.2

現象

承認の際に、画面上に『処理に失敗しました。』というエラーメッセージが表示されます。

条件

以下の条件をすべて満たす場合に、承認時にエラーが発生します。
  • 該当の案件のルート上の同期開始ノード~同期終了ノードの間に、承認ノード1つだけが未処理となっている。
    残っている未処理の承認ノードの承認を行うと、同期終了ノード、さらにその次のノードに処理が遷移する状態となっている。
  • 「IMW_T_CPL_TASK」テーブルにおいて、以下のレコードの処理終了時刻(end_date)が 1/1000 秒まで一致している。
    • 事象が発生する案件の同期開始ノードに関する処理レコード
    • 上記以外の案件における承認ノードの処理レコード

    コラム

    DB管理ツール等で表示したときに、以下のようなレコードが存在している状態を指します。

    ../../_images/44916_1.png
  • 事象の発生時刻に該当する例外ログに以下のようなスタックトレースが出力されている。
    (省略)
    log.message=同期標準到達判定処理で失敗しました。
    
    jp.co.intra_mart.foundation.workflow.exception.WorkflowPluginException: jp.co.intra_mart.system.workflow.engine.database.WorkflowDAOException: org.postgresql.util.PSQLException: ERROR: 副問い合わせで1行を超える行を返すものが式として使用されました
        at jp.co.intra_mart.system.workflow.plugin.rule.condition.SynchronousEndCondition.execute(SynchronousEndCondition.java:135)
        at jp.co.intra_mart.system.workflow.listener.context.WorkflowRuleConditionEventListenerContext.execute(WorkflowRuleConditionEventListenerContext.java:69)
        at jp.co.intra_mart.system.workflow.engine.core.event.ExtensionEventExecutor.executeProgramConditionCount(ExtensionEventExecutor.java:827)
        at jp.co.intra_mart.system.workflow.engine.core.event.AbstractForwardEventBase.doBranchUnionLogic(AbstractForwardEventBase.java:465)
        at jp.co.intra_mart.system.workflow.engine.core.event.AbstractForwardEventBase.doUserExtensionLogic(AbstractForwardEventBase.java:397)
        at jp.co.intra_mart.system.workflow.engine.core.event.AbstractForwardEventBase.executeUserExtensionLogic(AbstractForwardEventBase.java:288)
        at jp.co.intra_mart.system.workflow.engine.core.event.AbstractForwardEventBase.execute(AbstractForwardEventBase.java:197)
        at jp.co.intra_mart.system.workflow.engine.core.base.AbstractWorkflowEvent.fire(AbstractWorkflowEvent.java:117)
        at jp.co.intra_mart.system.workflow.engine.action.AbstractActionEventBase.forwardNextNode(AbstractActionEventBase.java:392)
        at jp.co.intra_mart.system.workflow.engine.action.ActionEventApprove.execute(ActionEventApprove.java:99)
        at jp.co.intra_mart.system.workflow.engine.action.AbstractActionEventBase.fire(AbstractActionEventBase.java:194)
        at jp.co.intra_mart.system.workflow.internal.manager.action.ActionManager.approve(ActionManager.java:271)
        at jp.co.intra_mart.foundation.workflow.application.process.ProcessManager.approve(ProcessManager.java:858)
        at jp.co.intra_mart.system.workflow.javascript.application.process.ProcessManagerObject.jsFunction_approve(ProcessManagerObject.java:217)
    (省略)
    Caused by: org.postgresql.util.PSQLException: ERROR: 副問い合わせで1行を超える行を返すものが式として使用されました
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2284)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2003)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:200)
        at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:424)
        at org.postgresql.jd0bc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:161)
        at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:114)
        at com.caucho.sql.UserPreparedStatement.executeQuery(UserPreparedStatement.java:108)
        at com.caucho.sql.UserPreparedStatement.executeQuery(UserPreparedStatement.java:108)
        at jp.co.intra_mart.system.database.PreparedStatementWrapper.executeQuery(PreparedStatementWrapper.java:274)
        at jp.co.intra_mart.system.workflow.engine.database.SelectDao4Engine.getAfterApprovedNodeList(SelectDao4Engine.java:3932)
        ... 75 more
    
    (省略)
    log.message=承認で失敗しました。
    
    jp.co.intra_mart.foundation.workflow.exception.WorkflowApiException: jp.co.intra_mart.system.workflow.engine.common.EngineException: jp.co.intra_mart.foundation.workflow.exception.WorkflowPluginException: jp.co.intra_mart.system.workflow.engine.database.WorkflowDAOException: org.postgresql.util.PSQLException: ERROR: 副問い合わせで1行を超える行を返すものが式として使用されました
        at jp.co.intra_mart.foundation.workflow.application.process.ProcessManager.approve(ProcessManager.java:860)
        at jp.co.intra_mart.system.workflow.javascript.application.process.ProcessManagerObject.jsFunction_approve(ProcessManagerObject.java:217)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at jp.co.intra_mart.system.javascript.MemberBox.invoke(MemberBox.java:126)
        at jp.co.intra_mart.system.javascript.FunctionObject.call(FunctionObject.java:442)
        at jp.co.intra_mart.system.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)
    (省略)
    Caused by: org.postgresql.util.PSQLException: ERROR: 副問い合わせで1行を超える行を返すものが式として使用されました
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2284)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2003)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:200)
        at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:424)
        at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:161)
        at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:114)
        at com.caucho.sql.UserPreparedStatement.executeQuery(UserPreparedStatement.java:108)
        at com.caucho.sql.UserPreparedStatement.executeQuery(UserPreparedStatement.java:108)
        at jp.co.intra_mart.system.database.PreparedStatementWrapper.executeQuery(PreparedStatementWrapper.java:274)
        at jp.co.intra_mart.system.workflow.engine.database.SelectDao4Engine.getAfterApprovedNodeList(SelectDao4Engine.java:3932)
        ... 75 more
    

    コラム

    上記は、データベースが PostgreSQL の場合の例外ログです。
    ご利用のデータベースの種類によってメッセージは異なりますが、「単一行を返すSQLで複数行が返却されているためにエラーとなっている」という内容のメッセージが出力されます。

原因

製品の不具合です。
同期処理などの結合判定ロジックで必要なデータを取得する SQL に誤りがあるためです。
以下の要件で対応を行っています。
  • iWP / iAF の場合

    • 要件 #14065 承認処理を完全に同時刻に実行したデータが存在すると同期結合処理が失敗
  • intra-mart Accel Platform の場合

    • 要件 #3093 承認処理を完全に同時刻に実行したデータが存在すると同期結合処理が失敗

解決方法

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

    • IM-Workflow 7.2.7
  • intra-mart Accel Platform の場合

    • 2013 Spring(Climbing) IM-Workflow 8.0.3

回避方法

ありません。

復旧方法

「imw_t_cpl_task」テーブルにおいて重複した 処理終了時刻(end_date) の値を、一時的に重複しない値に更新した上で、案件を処理してください。
案件の処理後は、更新した処理終了時刻(end_date)の値を元の値に更新し直してください。
ただし、テーブルへの直接アクセスは製品としてサポートしておりません。お客様の責任で実施を判断してください。

4.2.4. 未処理一覧から案件の処理画面が表示できない、または、処理ボタン押下後に「処理画面の表示に失敗しました」が表示される

対象バージョン

  • iWP / iAF の場合

    • IM-Workflow 7.2.0 ~ 最新バージョン
  • intra-mart Accel Platform の場合

    • 2012 Autumn(Alba) IM-Workflow 8.0.1 ~ 最新バージョン

現象

本件では、エラーのタイミングによって、発生する現象が異なります。
  • 未処理一覧から案件の「処理」をクリックすると、「対象の案件が既に処理されたか、削除された、または他ノードの非同期処理が実行中の可能性があるため、案件情報が取得できません。」と表示される。

  • ユーザコンテンツ画面で「承認」などの処理ボタンをクリックすると、標準処理画面(Greybox)に「処理画面の表示に失敗しました。」と表示される。

  • 標準処理画面(Greybox)の「承認」などの処理ボタンをクリックすると、「処理に失敗しました。」と表示される。その後、未処理一覧を表示すると、該当の案件が表示されない。

    • 参照一覧や前処理者の処理済一覧からフローを参照すると、他のユーザによって処理が正常に行われた情報が確認できる。

条件

下記の条件のいずれかを満たし、複数のユーザが同じタイミングで同じ案件の画面を表示したり、処理(承認など)した場合に発生します。
  • 対象の案件(ノード)の処理対象者となるユーザが複数存在する
  • 対象の案件(ノード)の処理対象者のユーザが代理設定を行っており、代理先のユーザでも処理が可能となっている

原因

製品の仕様です。
製品内部の排他制御のしくみにより、案件画面の表示や処理の実行前に(他のユーザによって)処理が行われた案件の処理が行えないようにしているためです。
本件が発生した案件については、他のユーザによる処理が正常に行われていれば、次の処理に遷移しておりますので、対応は不要です。

解決方法

ありません。

回避方法

ありません。

復旧方法

ありません。