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

4.22. 意図しないユーザプログラムが動作した


4.22.1. フロー定義のノード設定に設定していないユーザプログラムが実行されてしまう

対象バージョン

  • iWP / iAF の場合

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

    • 2012 Autumn(Alba) IM-Workflow 8.0.1 ~ 2023 Autumn(Hollyhock) IM-Workflow 8.0.34

現象

承認ノードのアクション処理に指定したユーザプログラムが終了ノードのノード到達処理で実行されます。
フロー定義の終了ノードのノード設定には到達処理のユーザプログラムのみが設定されています。

条件

以下のような操作を行った場合に発生する場合があります。
  1. コンテンツ定義のユーザプログラムに到達処理を追加する
  2. フロー定義の終了ノードのノード到達処理に1.で追加したユーザプログラムを設定する
  3. コンテンツ定義のユーザプログラムで1.で追加したユーザプログラムのプラグイン種別を到達処理以外に変更する

原因

製品の不具合です。
ユーザプログラムのプラグイン種別の変更を行ったさいにフロー定義のノード設定が残ってしまうため発生します。
以下の要件で対応を行っています。
  • iWP / iAF の場合

    • 要件 [24960] フロー定義のマスタメンテナンス画面上に表示されない設定が案件で有効となる
  • intra-mart Accel Platform の場合

    • 要件 [24959] フロー定義のマスタメンテナンス画面上に表示されない設定が案件で有効となる

解決方法

ありません。

回避方法

本現象が発生した場合、以下の操作を行うことで回避できます。
  1. ユーザプログラムのプラグイン種別を元に戻す
    • フロー定義の該当ノードのノード設定に1.で変更したユーザプログラムが表示される
  2. フロー定義の該当ノードのノード設定で1.のユーザプログラムを解除する
  3. ユーザプログラムのプラグイン種別を元に戻す

復旧方法

ありません。

4.22.2. フロー定義のコンテンツ詳細、ルート詳細のノード設定に設定したユーザプログラムが実行されなくなった

対象バージョン

  • iWP / iAF の場合

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

    • 2024 Spring(Iris) IM-Workflow 8.0.35 ~ 最新バージョン

現象

2024 Spring(Iris) IM-Workflow 8.0.35 以降にアップデートすると、フロー定義のコンテンツ詳細で設定した案件開始時実行プログラムやルート詳細のノード設定で設定したアクション動作処理など、不正なユーザプログラム連携情報に関連したユーザプログラムが実行されなくなります。

条件

不正なユーザプログラムの連携情報は、以下のような操作を行った場合に作成されます。
  1. 「コンテンツ定義 - バージョン - 編集」画面の「ユーザプログラム定義」画面にてユーザプログラムを追加する
  2. 「フロー定義 - バージョン - 編集」画面の「コンテンツ詳細」や「ルート詳細」にて 「標準から変更する」 として追加したユーザプログラムを連携設定
  3. 「コンテンツ定義 - バージョン - 編集」画面の「ユーザプログラム定義」画面にて連携設定したの「プラグイン種別」または「ノード種別」を変更

原因

以下の対応によるものです。
  • バグ #1858 フロー定義のマスタメンテナンス画面上に表示されない不正なユーザプログラムが動作します。

解決方法

開発環境、検証環境などで設計したすべてのフローを申請、一時保存(削除)する場合

  • 当該対応に不正なユーザプログラムの連携情報が存在するフローを申請処理、一時保存関連処理を行う際、除外したユーザプログラムの内容を情報ログとして出力します。
    開発環境、検証環境などで設計したすべてのフローを申請、一時保存(削除)を行い、下記の情報ログが出力されるか確認してください。
    • I.IMW.INTERNALMANAGER.FLOWMANAGER.10001
    • I.IMW.INTERNALMANAGER.FLOWMANAGER.10002
    • I.IMW.INTERNALMANAGER.FLOWMANAGER.10003
    • I.IMW.INTERNALMANAGER.FLOWMANAGER.10004
    • I.IMW.INTERNALMANAGER.FLOWMANAGER.10005
    • I.IMW.ENGINECOREEVENT.EXTENSIONEVENTEXECUTOR.10001
  • 上記の情報ログのメッセージコードについては、以下を参照してください。

SQLでIM-Workflowのマスタ定義のテーブルの情報を確認する場合(「コンテンツ詳細」に設定した不正なユーザプログラムの連携情報を確認および削除する方法)

  1. 確認する対象のマスタ定義の情報を特定します。
  • フローID
  • フローバージョンID
  • コンテンツID
  • コンテンツバージョンID
  • ルートID
  • ルートバージョンID
  1. 「コンテンツ詳細」にて設定できるユーザプログラムに関する各種情報を下表で確認します。
「コンテンツ詳細」にて設定できるユーザプログラムに関する各種情報
論理名 連携種別 拡張ポイントID
案件開始時実行プログラム 2 jp.co.intra_mart.workflow.plugin.event.matter.start.process
案件終了時実行プログラム 3 jp.co.intra_mart.workflow.plugin.event.matter.end.process
案件終了時実行プログラム(トランザクションなし) 34 jp.co.intra_mart.workflow.plugin.event.matter.end_no_transaction.process
案件退避時実行プログラム 20 jp.co.intra_mart.workflow.plugin.event.matter.archive.process
未完了案件削除時実行プログラム 21 jp.co.intra_mart.workflow.plugin.event.matter.active.delete.process
完了案件削除時実行プログラム 22 jp.co.intra_mart.workflow.plugin.event.matter.completed.delete.process
過去案件削除時実行プログラム 23 jp.co.intra_mart.workflow.plugin.event.matter.archived.delete.process
  1. 「標準から変更する」 として連携設定したユーザプログラムが存在するか確認します。
  • 以下のSQLを参考にしてクエリを作成して、実行してください。
    フローIDフローバージョンIDコンテンツバージョンIDルートバージョンID連携種別 は上記の 1. 2. を参照して適切な値に変更してください。
    SELECT
      cooperation_id
    FROM
      imw_m_flow_cooperation_detail
    WHERE
      flow_id = /*フローID*/'dummy_flow_id'
      AND flow_version_id = /*フローバージョンID*/'dummy_flow_version_id'
      AND contents_version_id = /*コンテンツバージョンID*/'dummy_contents_version_id'
      AND route_version_id = /*ルートバージョンID*/'dummy_route_version_id'
      AND cooperation_type = /*連携種別*/'2'
      AND cooperation_classify = '0'
      AND cooperation_id <> '#NOTHING#'
    

    コラム

    例)案件終了時実行プログラムについて調査する場合、 cooperation_type3 を指定します。
    SELECT
      cooperation_id
    FROM
      imw_m_flow_cooperation_detail
    WHERE
      flow_id = 'フローID'
      AND flow_version_id = 'フローバージョンID'
      AND contents_version_id = 'コンテンツバージョンID'
      AND route_version_id = 'ルートバージョンID'
      AND cooperation_type = '3'
      AND cooperation_classify = '0'
      AND cooperation_id <> '#NOTHING#'
    

    コラム

    レコードが取得できた場合は 4. に進み、ユーザプログラムの連携情報が不正かどうかを確認してください。
    レコードが取得できない場合は不正なユーザプログラムの連携情報はありません。
    「コンテンツ詳細」に設定した不正なユーザプログラムの連携情報に関する後述の作業は不要です。
  1. 「標準から変更する」 として登録したユーザプログラムが存在するか確認します。
  • 以下のSQLを参考にしてクエリを作成して、実行してください。
    cooperation_idコンテンツIDコンテンツバージョンID拡張ポイントID は適切な値に変更してください。
    SELECT
      *
    FROM
      imw_m_contents_plugin
    WHERE
      contents_plugin_id = /*cooperation_id*/'cooperation_id'
      AND contents_id = /*コンテンツID*/'dummy_contents_id'
      AND contents_version_id = /*コンテンツバージョンID*/'dummy_contents_version_id'
      AND extension_point_id = /*拡張ポイントID*/'jp.co.intra_mart.workflow.plugin.event.matter.start.process'
    

    コラム

    例)前作業の案件終了時実行プログラムを調査した結果が cooperation_id の値が program01 の場合、 contents_plugin_idprogram01 を指定し、 extension_point_idjp.co.intra_mart.workflow.plugin.event.matter.end.process を指定します。
    SELECT
      *
    FROM
      imw_m_contents_plugin
    WHERE
      contents_plugin_id = 'program01'
      AND contents_id = 'コンテンツID'
      AND contents_version_id = 'コンテンツバージョンID'
      AND extension_point_id = 'jp.co.intra_mart.workflow.plugin.event.matter.end.process'
    

    コラム

    レコードが取得できない場合は不正なユーザプログラムの連携情報はありません。
    「コンテンツ詳細」に設定した不正なユーザプログラムの連携情報に関する後述の作業は不要です。
  1. 「コンテンツ詳細」に設定した無効なユーザプログラムの連携情報を削除します。
  • 「フロー定義 - バージョン - 編集」画面の「コンテンツ詳細」を表示します。
  • 3. で指定した 連携種別 が画面上、 「標準から変更する」 となっていることを確認し、 4. で取得したユーザプログラムをすべて解除します。
  • 画面下部の「更新」ボタンをクリックします。

SQLでIM-Workflowのマスタ定義のテーブルの情報を確認する場合(「ルート詳細」に設定した不正なユーザプログラムの連携情報を確認および削除する方法)

  1. 確認する対象のマスタ定義の情報を特定します。
  • フローID
  • フローバージョンID
  • コンテンツID
  • コンテンツバージョンID
  • ルートID
  • ルートバージョンID
  • ノードID
  • ノード種類
  1. 「ルート詳細」にて設定できるユーザプログラムに関する各種情報を下表で確認します。
「ルート詳細」にて設定できるユーザプログラムに関する各種情報
ノード種類 コンテンツ定義のnode_type ユーザプログラム名 連携種別 拡張ポイントID
終了 1 ノード到達処理プログラム 0 jp.co.intra_mart.workflow.plugin.event.node.arrive.process
申請 2 ノード到達処理プログラム 0 jp.co.intra_mart.workflow.plugin.event.node.arrive.process
申請 2 アクション処理プログラム 1 jp.co.intra_mart.workflow.plugin.event.node.action.process
承認/動的処理/横配置/縦配置 3 ノード到達処理プログラム 0 jp.co.intra_mart.workflow.plugin.event.node.arrive.process
承認/動的処理/横配置/縦配置 3 アクション処理プログラム 1 jp.co.intra_mart.workflow.plugin.event.node.action.process
システム 5 ノード到達処理プログラム 0 jp.co.intra_mart.workflow.plugin.event.node.arrive.process
システム 5 アクション処理プログラム 1 jp.co.intra_mart.workflow.plugin.event.node.action.process
分岐開始 ブランク or NULL 分岐結合プログラム 4 jp.co.intra_mart.workflow.plugin.event.node.branch.rule
分岐終了 ブランク or NULL 分岐結合プログラム 4 jp.co.intra_mart.workflow.plugin.event.node.union.rule
  1. 「標準から変更する」 として連携設定したユーザプログラムが存在するか確認します。
  • 以下のSQLを参考にしてクエリを作成して、実行してください。
    フローIDフローバージョンIDコンテンツバージョンIDルートバージョンIDノードID連携種別 は上記の 1. 2. を参照して適切な値に変更してください。
    SELECT
      cooperation_id
    FROM
      imw_m_node_cooperation_detail
    WHERE
      flow_id = /*フローID*/'dummy_flow_id'
      AND flow_version_id = /*フローバージョンID*/'dummy_flow_version_id'
      AND contents_version_id = /*コンテンツバージョンID*/'dummy_contents_version_id'
      AND route_version_id = /*ルートバージョンID*/'dummy_route_version_id'
      AND node_id = /*ノードID*/'dummy_node_id'
      AND cooperation_type = /*連携種別*/'0'
      AND cooperation_classify = '0'
      AND cooperation_id <> '#NOTHING#'
    

    コラム

    例)特定の承認ノードのアクション処理プログラムについて調査する場合、 cooperation_type1 を指定します。
    SELECT
      cooperation_id
    FROM
      imw_m_node_cooperation_detail
    WHERE
      flow_id = 'フローID'
      AND flow_version_id = 'フローバージョンID'
      AND contents_version_id = 'コンテンツバージョンID'
      AND route_version_id = 'ルートバージョンID'
      AND node_id = 'ノードID'
      AND cooperation_type = '1'
      AND cooperation_classify = '0'
      AND cooperation_id <> '#NOTHING#'
    

    コラム

    レコードが取得できた場合は 4. に進み、ユーザプログラムの連携情報が不正かどうかを確認してください。
    レコードが取得できない場合は不正なユーザプログラムの連携情報はありません。
    「ルート詳細」に設定した不正なユーザプログラムの連携情報に関する後述の作業は不要です。
  1. 「標準から変更する」 として登録したユーザプログラムが存在するか確認します。
  • 以下のSQLを参考にしてクエリを作成して、実行してください。
    cooperation_idコンテンツコンテンツバージョンIDコンテンツ定義のnode_type拡張ポイントID は適切な値に変更してください。
    SELECT
      *
    FROM
      imw_m_contents_plugin
    WHERE
      contents_plugin_id = /*cooperation_id*/'cooperation_id'
      AND contents_id = /*コンテンツID*/'dummy_contents_id'
      AND contents_version_id = /*コンテンツバージョンID*/'dummy_contents_version_id'
      AND node_type = /*コンテンツ定義のnode_type*/'1'
      AND extension_point_id = /*拡張ポイントID*/'jp.co.intra_mart.workflow.plugin.event.node.arrive.process'
    

    コラム

    例)前作業の特定の承認ノードのアクション処理プログラムを調査した結果が cooperation_id の値が program02 の場合、 contents_plugin_idprogram02 を指定し、 node_type3 を指定し、 extension_point_idjp.co.intra_mart.workflow.plugin.event.node.action.process を指定します。
    SELECT
      *
    FROM
      imw_m_contents_plugin
    WHERE
      contents_plugin_id = 'program02'
      AND contents_id = 'コンテンツID'
      AND contents_version_id = 'コンテンツバージョンID'
      AND node_type = '3'
      AND extension_point_id = 'jp.co.intra_mart.workflow.plugin.event.node.action.process'
    

    コラム

    レコードが取得できない場合は不正なユーザプログラムの連携情報はありません。
    「ルート詳細」に設定した不正なユーザプログラムの連携情報に関する後述の作業は不要です。
  1. 「ルート詳細」に設定した無効なユーザプログラムの連携情報を削除します。
  • 「フロー定義 - バージョン - 編集」画面の「ルート詳細」を表示します。
  • 3. で指定した ノードID の「ノード設定」画面を表示し、 「標準から変更する」 となっていることを確認し、 4. で取得したユーザプログラムが存在した場合、すべて解除します。
  • 画面下部の「登録」ボタンをクリックします。

回避方法

ありません。

復旧方法

ありません。