Accel-Mart Quick チュートリアルガイド 第14版 2023-02-08

10.9.5. 案件終了処理

案件終了処理は、ワークフローの案件が完了する際に実行される業務ロジックです。
以下のタイミングで実行されます。
  • 最後の承認者が「承認」を行ったとき
  • 承認者が「否認」を行ったとき
  • 申請者が「取止め」を行ったとき
  • ワークフロー管理者による案件操作で終了ノードに到達したとき

注意

案件終了処理は、直前に実行される後処理や到達処理の業務ロジックとは独立した処理として実行されます。
そのため、案件終了処理の業務ロジックでエラーが発生した場合でも、直前に行われた処理を戻すことはできません。

10.9.5.1. 利用例

  • 最後の承認者が承認して案件が完了した際に、申請内容をWebデータベースに登録・更新する
  • 案件終了時に定型文をメールで送信する
  • 案件終了時に添付ファイルをストレージに格納する

10.9.5.2. 業務ロジックの概要

案件終了処理の業務ロジックを新規作成すると、初期状態では以下の図のように設定されています。
タスクを追加し、実現したい業務ロジックを作成してください。
../../../_images/matter_end_process_1.png
図:業務ロジックの初期状態
案件終了処理の業務ロジックには、「分岐(正常終了)」タスクが初期設定されています。
設定されている条件式は以下の通りです。
  • ${ $input.imwMatterEndProcess.lastResultStatus == 'approveend' || $input.imwMatterEndProcess.lastResultStatus == 'mattercomplete' || $input.imwMatterEndProcess.lastResultStatus == 'matterhandle' }
案件が正常終了(最終承認、承認終了、案件操作によって終了)した場合に実行する処理は分岐の then から、それ以外(取止め、否認)によって終了した場合に実行する処理は分岐の else からそれぞれ線を繋げてください。
また、案件終了処理の業務ロジックには、「業務データ取得」タスクが初期配置されています。
当該タスクで、ワークフローのフォームへの入力情報を取得します。
業務ロジック内でフォームの入力情報を使用したい場合は、「業務データ取得」タスクの返却値を利用してください。

注意

案件終了処理は、ワークフローのデータベーストランザクション内で実行されます。
そのため、業務ロジックの中で独自にデータベーストランザクション制御を行うことはできません。
JavaScriptユーザ定義タスクで、データベーストランザクション制御を伴う処理は実施しないでください。

10.9.5.3. 入力値

入力値 説明
imwProcessCommon<object> imwProcessCommonオブジェクト を参照
imwMatterEndProcess<object> imwMatterEndProcessオブジェクト を参照

10.9.5.3.1. imwProcessCommonオブジェクト

ワークフローに関するパラメータを保持します。
入力値 説明
localeId<string>
処理実行時のロケールID
  • ja:日本語
  • en:英語
  • zh_CN:中国語(簡体字)
tenantId<string>
テナントID
applyBaseDate<string>
申請基準日( yyyy/MM/dd 形式)
parameter<string>
当業務ロジックのロジックフロー情報を表すパラメータ
targetLocales<string[]>
システムで利用しているロケールID
contentsId<string>
コンテンツID
contentsVersionId<string>
コンテンツバージョンID
routeId<string>
ルートID
routeVersionId<string>
ルートバージョンID
flowId<string>
フローID
flowVersionId<string>
フローバージョンID
processDate<string>
処理日( yyyy/MM/dd 形式)
systemMatterId<string>
システム案件ID
userDataId<string>
ユーザデータID

10.9.5.3.2. imwMatterEndProcessオブジェクト

ワークフローの処理者や処理結果などの情報を保持します。
入力値 説明
actFlag<string>
代理フラグ
  • 0:本人が処理
  • 1:代理先ユーザが処理
lastAuthUserCd<string>
最終処理権限者コード
案件をログインユーザ本人の権限で処理した場合は本人のユーザコードが、代理先として処理した場合は代理元のユーザコードが設定されます。
lastExecUserCd<string>
最終処理実行者コード
実際に案件を処理したユーザのユーザコードです。
案件を代理先として処理した場合は、ログインユーザ(代理先ユーザ)のユーザコードが設定されます。
lastProcessNodeId<string>
最終処理が実行されたノードのノードID
lastResultStatus<string>
最終処理結果ステータス
  • discontinue:取止め
  • approveend:承認終了
  • mattercomplete:最終承認
  • deny:否認
  • matterhandle:案件操作
mailIds<string[]> メール種別「処理結果通知」で設定されているメールID
mailReplaceMap<map>
メール置換文字情報
置換文字列と置換内容の詳細は「IM-Workflow 仕様書 別紙」を参照してください。
matterName<string>
案件名
matterNumber<string>
案件番号

10.9.5.4. 出力値

出力値 必須/任意 説明
error<boolean> 必須
エラーフラグ
true を指定した場合、当処理をエラー終了します。
処理が正常に終了した場合は false を設定してください。
message<string> 任意
指定したメッセージを例外ログとして出力します。
ロケールごとにメッセージを用意する必要がなければこのプロパティを利用してください。
localizedMessages<object> 任意
指定したメッセージを例外ログとして出力します。
案件終了処理のコンテキストから解決されたロケールに一致するメッセージを使用します。
message が指定されている場合はこのプロパティは使用されません。
- ja<string> 任意 日本語ロケールメッセージ
- en<string> 任意 英語ロケールメッセージ
- zh_CN<string> 任意 中国語ロケールメッセージ
mailSendFlag<boolean> 任意
ワークフローの「処理依頼」メールを送信するかを指定します。
未指定の場合は true として動作します。
  • true:メールを送信する
  • false:メールを送信しない

10.9.5.5. 定数

定数ID 説明
FALSE 出力値 error へのマッピングに利用する定数です。
imfrApplicationId
アプリケーションID
「ファイルアップロード情報取得」タスクの入力値等に使用します。
imwFlowId フローID

10.9.5.6. ユーザ定義タスク

案件終了処理作成時に初期配置される「業務データ取得」タスクに関する情報です。

コラム

「業務データ取得」タスクは「Forma登録情報定義」という種類のユーザ定義です。
「ノーコード開発業務ロジック」というユーザカテゴリに業務ロジック名と同じユーザ定義名で登録されます。

10.9.5.6.1. 入力値

入力値 説明
insertId<string>
データ登録ID
業務ロジック入力値の userDataId を設定してください。

10.9.5.6.2. 出力値

入力値 説明
formaItemInfo<object>
画面アイテム入力情報
フォームの各画面アイテムの入力情報を保持するオブジェクトです。
配下のパラメータ名は画面アイテムのフィールド識別IDです。
複数項目選択可能な画面アイテム(「チェックボックス」、「リストボックス」)は選択された値をカンマ区切りにして値が設定されます。
formaTableItemInfo<object>
テーブル系画面アイテム入力項目
配下にテーブル識別IDをパラメータ名とするオブジェクトの配列を保持します。
formaSystemInfo<object> システム情報
- imfr_sd_insert_id<string> データ登録ID
- imfr_sd_application_id<string> アプリケーションID
- imfr_sd_application_no<long> アプリケーション履歴番号
- imfr_sd_version_no<long> バージョン
- imfr_sd_create_date<date> 登録日時
- imfr_sd_create_user_cd<string> 登録者ユーザコード
- imfr_sd_record_date<date> 更新日時
- imfr_sd_record_user_cd<string> 更新者ユーザコード
- imfr_sd_preserve_flag<string>
一時保存フラグ
  • 1:一時保存
  • 0:一時保存でない

10.9.5.7. 実装例

簡単な案件終了処理の業務ロジック実装例をご紹介します。
この業務ロジックでは、承認によって案件が終了した際に、ワークフローの申請内容を特定のユーザにメールで送信します。

10.9.5.7.1. 概要

../../../_images/matter_end_process_2.png
図:業務ロジックの実装例
以下のタスクを使用しています。
  • 汎用タスク > システム通知テキストメール送信
以下のユーザ定義タスクを作成して使用しています。
  • テンプレート定義「メール本文作成」

10.9.5.7.2. 処理の流れ・設定例

  1. テンプレート定義を利用して、送信するメールの本文を作成します。
    「ユーザ定義追加」から「テンプレート定義新規作成」を選択して、テンプレート定義「メール本文作成」を作成します。
  2. テンプレート定義「メール本文作成」の入力値、テンプレートを設定します。
    今回は、入力値で案件名( matterName )、案件番号( matterNumber )、フォームの入力情報( namepricenotes )を受け取り、テンプレートの所定の位置に埋め込みます。
    テンプレートは以下のようにします。
    <#setting url_escaping_charset="UTF-8">
    
    以下の物品購入申請が承認され、案件が終了しました。
    
    案件番号:${matterNumber}
    案件名:${matterName}
    
    物品名:${name}
    価格:${price}
    備考:${notes}
    

    コラム

    テンプレート定義の詳細は以下を参照してください。
  3. 作成した「メール本文作成」タスクを配置します。
    今回は、案件が承認して完了した場合にメールを送信するようにしたいため、「分岐(正常終了)」タスクの then から線を繋げます。
  4. 「メール本文作成」タスクのマッピング設定を行います。
    案件名・案件番号は業務ロジックの入力値から、フォームの入力情報は「業務データ取得」タスク( business_data_select )から、「メール本文作成」タスクの入力値にマッピングします。
  5. 「システム通知テキストメール送信」タスクを用いて、メールを送信します。
    「メール本文作成」タスクの返却値 output をメール本文( body )にマッピングします。
    メール件名( subject )と宛先ユーザ( toUserCds )は定数に値を設定し、マッピングします。