intra-mart IM-Workflow トラブルシューティング 第21版 2023-04-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)の「承認」などの処理ボタンをクリックすると、「処理に失敗しました。」と表示される。その後、未処理一覧を表示すると、該当の案件が表示されない。

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

条件

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

原因

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

解決方法

ありません。

回避方法

ありません。

復旧方法

ありません。

4.2.5. 引戻し元ノードの既処理者名が基準日において取得不可の場合、引戻しが行えません

対象バージョン

  • iWP / iAF の場合

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

    • 2012 Autumn(Alba) IM-Workflow 8.0.1 ~ 2022 Spring(Eustoma) IM-Workflow 8.0.31

現象

  • 引戻し元ノードの既処理者名が基準日 [1] において取得不可の場合、引戻しが行えません。
    [1](1, 2, 3)
    基準日
    「対象者を展開する日付」です。デフォルトでは「申請基準日」に該当します。
    IM-Workflow 2014 Winter(8.0.9)以降の場合、フロー定義の「対象者を展開する日」の設定値に基づいて異なります。
  • 再現手順の例は以下の通りです。
    1. ユーザ aoyagi が申請を行う

    2. ユーザ aoyagi のユーザプロファイルを無効化する

    3. 承認ノードでユーザ ueda が差戻しを行う

    4. ユーザ ueda が引戻し(差戻し後引戻し)を行う
      この際に例外が発生し、引戻しができません。

条件

以下の条件に合致する場合に発生します。

  • 利用しているデータベースが Oracle(バージョン問わず)である。

  • 基準日 [1] 時点の既処理者のユーザプロファイルが無効化している。

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

    (省略)
    log.message=特定のユーザが引戻し先として指定可能なノードを取得で失敗しました。
    
    jp.co.intra_mart.foundation.workflow.exception.WorkflowApiException: jp.co.intra_mart.system.workflow.engine.database.WorkflowDAOException: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: ("%テナントDBのスキーマ名%"."IMW_T_CPL_USER"."AUTH_USER_NAME")にはNULLは挿入できません。
    
       at jp.co.intra_mart.foundation.workflow.application.process.PullBackManager.pullBack(PullBackManager.java:177)
       at jp.co.intra_mart.system.workflow.javascript.application.process.PullBackManagerObject.jsFunction_pullBack(PullBackManagerObject.java:194)
       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:498)
       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: jp.co.intra_mart.system.workflow.engine.database.WorkflowDAOException: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: ("%テナントDBのスキーマ名%"."IMW_T_CPL_USER"."AUTH_USER_NAME")にはNULLは挿入できません。
    
       at jp.co.intra_mart.system.workflow.engine.database.UpdateDAOImpl.executeUpdate(UpdateDAOImpl.java:293)
       at jp.co.intra_mart.system.workflow.engine.database.UpdateDAOImpl.insert(UpdateDAOImpl.java:94)
       at jp.co.intra_mart.system.workflow.engine.core.event.TaskCompleteEvent.addTaskCompleteUser(TaskCompleteEvent.java:337)
       at jp.co.intra_mart.system.workflow.engine.core.event.TaskCompleteEvent.execute(TaskCompleteEvent.java:109)
       at jp.co.intra_mart.system.workflow.engine.core.base.AbstractWorkflowEvent.fire(AbstractWorkflowEvent.java:117)
       at jp.co.intra_mart.system.workflow.engine.core.ActiveTask.complete(ActiveTask.java:110)
       at jp.co.intra_mart.system.workflow.engine.core.event.AbstractForwardEventBase.execute(AbstractForwardEventBase.java:121)
       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.forwardAppointNode(AbstractActionEventBase.java:946)
       at jp.co.intra_mart.system.workflow.engine.action.ActionEventPullBack.pullBackForward(ActionEventPullBack.java:555)
       at jp.co.intra_mart.system.workflow.engine.action.ActionEventPullBack.execute(ActionEventPullBack.java:93)
       at jp.co.intra_mart.system.workflow.engine.action.AbstractActionEventBase.fire(AbstractActionEventBase.java:227)
       at jp.co.intra_mart.system.workflow.internal.manager.action.ActionManager.pullBack(ActionManager.java:382)
       at jp.co.intra_mart.foundation.workflow.application.process.PullBackManager.pullBack(PullBackManager.java:174)
       ... 65 more
    Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: ("%テナントDBのスキーマ名%"."IMW_T_CPL_USER"."AUTH_USER_NAME")にはNULLは挿入できません。
    
       at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447)
       at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
       at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951)
       at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513)
       at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227)
       at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
       at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:208)
       at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1046)
       at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1336)
       at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3613)
       at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3694)
       at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1354)
       at com.caucho.sql.UserPreparedStatement.executeUpdate(UserPreparedStatement.java:132)
       at jp.co.intra_mart.system.database.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:310)
       at jp.co.intra_mart.system.workflow.engine.database.UpdateDAOImpl.executeUpdate(UpdateDAOImpl.java:289)
       ... 78 more
    

原因

引戻しの際、データベースに処理者情報を登録します。
登録情報として引戻し元ノードの既処理者情報を取得しますが、基準日 [1] 時点で既処理者情報が取得できない場合、既処理者名はブランクとして扱われます。
上記の情報が登録対象テーブルの NOT NULL 制約に違反するため、例外が発生します。

解決方法

以下のパッチまたはアップデートを適用することで解決します。
  • intra-mart Accel Platform の場合

    2022 Winter(Freesia) IM-Workflow 8.0.32

回避方法

案件操作を利用して以下のいずれかの対応を実施してください。
  • 引戻し元ノードの処理対象者を再設定または再展開し、引戻し元ノードの処理を行う
  • ノード移動により引戻し先ノードに移動する

復旧方法

ありません。

4.2.6. 申請や承認などの処理後の画面遷移で HTTP 404 エラーが発生し、画面遷移できない

対象バージョン

  • iWP / iAF の場合

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

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

現象

以下の処理に伴う画面遷移時に、HTTP 404 エラーが発生し、画面遷移ができません。
  • 申請や承認などの案件の処理実行時
  • ユーザコンテンツ画面からの「戻る」(ボタン・リンク)の押下時

条件

以下のすべての条件に合致する場合に発生する可能性があります。

  • Internet Information Services(IIS) を利用している
  • 画面遷移のためのURLやクエリ文字列が長い

原因

Internet Information Services(IIS) の仕様です。
Internet Information Services(IIS) の「 Request Limits <requestLimits> 」に抵触する HTTP リクエストを送信した場合、HTTP 404 エラーが発生します。

解決方法

ありません。

回避方法

以下のいずれかの対応を検討してください。
  • URLが長くなっている場合は、URL設計に問題がある可能性が考えられます。
    URLの短縮を検討してください。
  • クエリ文字列が長くなっている場合は、画面遷移に関する処理に問題がある可能性が考えられます。
    以下のような実装が存在しないかを確認し、必要に応じて修正してください。
    • workflowOpenPage タグの利用の際、method 属性に明示的に “GET” を指定している
    • 独自実装されたユーザコンテンツにおいて、「戻る」用 form のmethod 属性が “GET” となっている
    • 画面遷移時にクエリ文字列を独自に付加している
  • Internet Information Services(IIS) の「 Request Limits <requestLimits> 」に関する設定値の変更を検討してください。
    設定値を変更する場合には、お客様の責任で検証を行った上で実施してください。

復旧方法

ありません。