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.で追加したユーザプログラムを設定する
- コンテンツ定義のユーザプログラムで1.で追加したユーザプログラムのプラグイン種別を到達処理以外に変更する
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 以降にアップデートすると、フロー定義のコンテンツ詳細で設定した案件開始時実行プログラムやルート詳細のノード設定で設定したアクション動作処理など、不正なユーザプログラム連携情報に関連したユーザプログラムが実行されなくなります。
条件¶
不正なユーザプログラムの連携情報は、以下のような操作を行った場合に作成されます。
- 「コンテンツ定義 - バージョン - 編集」画面の「ユーザプログラム定義」画面にてユーザプログラムを追加する
- 「フロー定義 - バージョン - 編集」画面の「コンテンツ詳細」や「ルート詳細」にて 「標準から変更する」 として追加したユーザプログラムを連携設定
- 「コンテンツ定義 - バージョン - 編集」画面の「ユーザプログラム定義」画面にて連携設定したの「プラグイン種別」または「ノード種別」を変更
解決方法¶
申請済みの案件の場合
- ありません
これから申請する案件の場合
- 不正なユーザプログラムが存在するか切り分け、マスタ定義を再設定します。以下の該当するものを実施してください。
不正なユーザプログラムが存在するか切り分けのためフローを申請できる場合
フローを申請できないが、クエリ(SQL)が実行できる権限・環境がある場合
フローを申請できない、かつ、クエリ(SQL)が実行できる権限・環境がない場合
- 解決方法はありません。
開発環境、検証環境などで設計したすべてのフローを申請、一時保存(削除)する場合¶
当該対応に不正なユーザプログラムの連携情報が存在するフローを申請処理、一時保存関連処理を行う際、除外したユーザプログラムの内容を情報ログとして出力します。開発環境、検証環境などで設計したすべてのフローを申請、一時保存(削除)を行い、下記の情報ログが出力されるか確認してください。
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のマスタ定義のテーブルの情報を確認する場合(「コンテンツ詳細」に設定した不正なユーザプログラムの連携情報を確認および削除する方法)¶
- 確認する対象のマスタ定義の情報を特定します。
- フローID
- フローバージョンID
- コンテンツID
- コンテンツバージョンID
- ルートID
- ルートバージョンID
- 「コンテンツ詳細」にて設定できるユーザプログラムに関する各種情報を下表で確認します。
「コンテンツ詳細」にて設定できるユーザプログラムに関する各種情報 論理名 連携種別 拡張ポイント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
- 「標準から変更する」 として連携設定したユーザプログラムが存在するか確認します。
以下の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_type に 3 を指定します。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. に進み、ユーザプログラムの連携情報が不正かどうかを確認してください。レコードが取得できない場合は不正なユーザプログラムの連携情報はありません。「コンテンツ詳細」に設定した不正なユーザプログラムの連携情報に関する後述の作業は不要です。
- 「標準から変更する」 として登録したユーザプログラムが存在するか確認します。
以下の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_id に program01 を指定し、 extension_point_id に jp.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'コラム
レコードが取得できない場合は不正なユーザプログラムの連携情報はありません。「コンテンツ詳細」に設定した不正なユーザプログラムの連携情報に関する後述の作業は不要です。
- 「コンテンツ詳細」に設定した無効なユーザプログラムの連携情報を削除します。
- 「フロー定義 - バージョン - 編集」画面の「コンテンツ詳細」を表示します。
- 3. で指定した 連携種別 が画面上、 「標準から変更する」 となっていることを確認し、 4. で取得したユーザプログラムをすべて解除します。
- 画面下部の「更新」ボタンをクリックします。
SQLでIM-Workflowのマスタ定義のテーブルの情報を確認する場合(「ルート詳細」に設定した不正なユーザプログラムの連携情報を確認および削除する方法)¶
- 確認する対象のマスタ定義の情報を特定します。
- フローID
- フローバージョンID
- コンテンツID
- コンテンツバージョンID
- ルートID
- ルートバージョンID
- ノードID
- ノード種類
- 「ルート詳細」にて設定できるユーザプログラムに関する各種情報を下表で確認します。
「ルート詳細」にて設定できるユーザプログラムに関する各種情報 ノード種類 コンテンツ定義の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
- 「標準から変更する」 として連携設定したユーザプログラムが存在するか確認します。
以下の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_type に 1 を指定します。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. に進み、ユーザプログラムの連携情報が不正かどうかを確認してください。レコードが取得できない場合は不正なユーザプログラムの連携情報はありません。「ルート詳細」に設定した不正なユーザプログラムの連携情報に関する後述の作業は不要です。
- 「標準から変更する」 として登録したユーザプログラムが存在するか確認します。
以下の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_id に program02 を指定し、 node_type に 3 を指定し、 extension_point_id に jp.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'コラム
レコードが取得できない場合は不正なユーザプログラムの連携情報はありません。「ルート詳細」に設定した不正なユーザプログラムの連携情報に関する後述の作業は不要です。
- 「ルート詳細」に設定した無効なユーザプログラムの連携情報を削除します。
- 「フロー定義 - バージョン - 編集」画面の「ルート詳細」を表示します。
- 3. で指定した ノードID の「ノード設定」画面を表示し、 「標準から変更する」 となっていることを確認し、 4. で取得したユーザプログラムが存在した場合、すべて解除します。
- 画面下部の「登録」ボタンをクリックします。