メインコンテンツまでスキップ

案件終了処理

案件終了処理は、ワークフローの案件が完了する際に実行される業務ロジックです。
以下のタイミングで実行されます。

  • 最後の承認者が「承認」を行ったとき
  • 承認者が「否認」を行ったとき
  • 申請者が「取止め」を行ったとき
  • ワークフロー管理者による案件操作で終了ノードに到達したとき
注意

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

利用例

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

業務ロジックの概要

案件終了処理の業務ロジックを新規作成すると、初期状態では以下の図のように設定されています。
タスクを追加し、実現したい業務ロジックを作成してください。

業務ロジックの初期状態

案件終了処理の業務ロジックには、「分岐(正常終了)」タスクが初期設定されています。
設定されている条件式は以下の通りです。

  • ${ $input.imwMatterEndProcess.lastResultStatus == approveend $input.imwMatterEndProcess.lastResultStatus == mattercomplete $input.imwMatterEndProcess.lastResultStatus == matterhandle }

案件が正常終了(最終承認、承認終了、案件操作によって終了)した場合に実行する処理は分岐の then から、それ以外(取止め、否認)によって終了した場合に実行する処理は分岐の else からそれぞれ線を繋げてください。

また、案件終了処理の業務ロジックには、「業務データ取得」タスクが初期配置されています。
当該タスクで、ワークフローのフォームへの入力情報を取得します。
業務ロジック内でフォームの入力情報を使用したい場合は、「業務データ取得」タスクの返却値を利用してください。

注意

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

入力値

入力値説明
imwProcessCommonobjectimwProcessCommonオブジェクト を参照
imwMatterEndProcessobjectimwMatterEndProcessオブジェクト を参照

imwProcessCommonオブジェクト

ワークフローに関するパラメータを保持します。

入力値説明
localeIdstring処理実行時のロケールID
  • ja:日本語
  • en:英語
  • zh_CN:中国語(簡体字)
tenantIdstringテナントID
applyBaseDatestring申請基準日( yyyy/MM/dd 形式)
parameterstring当業務ロジックのロジックフロー情報を表すパラメータ
targetLocalesstring[]システムで利用しているロケールID
contentsIdstringコンテンツID
contentsVersionIdstringコンテンツバージョンID
routeIdstringルートID
routeVersionIdstringルートバージョンID
flowIdstringフローID
flowVersionIdstringフローバージョンID
processDatestring処理日( yyyy/MM/dd 形式)
systemMatterIdstringシステム案件ID
userDataIdstringユーザデータID

imwMatterEndProcessオブジェクト

ワークフローの処理者や処理結果などの情報を保持します。

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

出力値

出力値説明
errorbooleanエラーフラグ
true を指定した場合、当処理をエラー終了します。
処理が正常に終了した場合は false を設定してください。
messagestring指定したメッセージを例外ログとして出力します。
ロケールごとにメッセージを用意する必要がなければこのプロパティを利用してください。
localizedMessagesobject指定したメッセージを例外ログとして出力します。
案件終了処理のコンテキストから解決されたロケールに一致するメッセージを使用します。
message が指定されている場合はこのプロパティは使用されません。
mailSendFlagbooleanワークフローの「処理依頼」メールを送信するかを指定します。
未指定の場合は true として動作します。
  • true:メールを送信する
  • false:メールを送信しない

localizedMessagesオブジェクト

出力値説明
jastring日本語ロケールメッセージ
enstring英語ロケールメッセージ
zh_CNstring中国語ロケールメッセージ

定数

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

ユーザ定義タスク

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

注記

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

入力値

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

出力値

入力値説明
formaItemInfoobject画面アイテム入力情報
フォームの各画面アイテムの入力情報を保持するオブジェクトです。
配下のパラメータ名は画面アイテムのフィールド識別IDです。
複数項目選択可能な画面アイテム(「チェックボックス」、「リストボックス」)は選択された値をカンマ区切りにして値が設定されます。
formaTableItemInfoobjectテーブル系画面アイテム入力項目
配下にテーブル識別IDをパラメータ名とするオブジェクトの配列を保持します。
formaSystemInfoobjectシステム情報

formaSystemInfoオブジェクト

出力値説明
imfr_sd_insert_idstringデータ登録ID
imfr_sd_application_idstringアプリケーションID
imfr_sd_application_nolongアプリケーション履歴番号
imfr_sd_version_nolongバージョン
imfr_sd_create_datedate登録日時
imfr_sd_create_user_cdstring登録者ユーザコード
imfr_sd_record_datedate更新日時
imfr_sd_record_user_cdstring更新者ユーザコード
imfr_sd_preserve_flagstring一時保存フラグ
  • 1:一時保存
  • 0:一時保存でない

実装例

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

概要

業務ロジックの実装例
図:業務ロジックの実装例

以下のタスクを使用しています。

  • 汎用タスク > システム通知テキストメール送信

以下のユーザ定義タスクを作成して使用しています。

  • テンプレート定義「メール本文作成」

処理の流れ・設定例

  1. テンプレート定義を利用して、送信するメールの本文を作成します。 「ユーザ定義追加」から「テンプレート定義新規作成」を選択して、テンプレート定義「メール本文作成」を作成します。

  2. テンプレート定義「メール本文作成」の入力値、テンプレートを設定します。 今回は、入力値で案件名( matterName )、案件番号( matterNumber )、フォームの入力情報( namepricenotes )を受け取り、テンプレートの所定の位置に埋め込みます。
    テンプレートは以下のようにします。

    <#setting url_escaping_charset="UTF-8">

    以下の物品購入申請がXXノードに到達しました。

    案件番号:${matterNumber}
    案件名:${matterName}

    物品名:${name}
    価格:${price}
    備考:${notes}
    備考

    テンプレート定義の詳細は以下を参照してください。

  3. 作成した「メール本文作成」タスクを配置します。 今回は、案件が承認して完了した場合にメールを送信するようにしたいため、「分岐(正常終了)」タスクの then から線を繋げます。

  4. 「メール本文作成」タスクのマッピング設定を行います。 案件名・案件番号は業務ロジックの入力値から、フォームの入力情報は「業務データ取得」タスク( business_data_select )から、「メール本文作成」タスクの入力値にマッピングします。

  5. 「システム通知テキストメール送信」タスクを用いて、メールを送信します。 「メール本文作成」タスクの返却値 output をメール本文( body )にマッピングします。
    メール件名( subject )と宛先ユーザ( toUserCds )は定数に値を設定し、マッピングします。