後処理(ワークフロー)
後処理は、ワークフローで以下の操作を行った際に実行される業務ロジックです。
- 申請
- 再申請
- 取止め
- 引戻し
- 承認
- 否認
- 差戻し
- 保留
- 保留解除
- 案件操作
- 一時保存
業務ロジックを作成する際に、業務ロジックを設定する対象ノードを選択できます。
設定した業務ロジックは、対象ノードで操作が行われた際にのみ実行されます。
対象ノードは、「業務ロジック」画面で業務ロジック名をクリックして遷移する「業務ロジック情報」画面で変更できます。
対象ノードで承認処理を行った場合のみ実行したい(差戻し・否認等の処理では実行しない)などの制御は、ロジック内の分岐を利用して実装可能です。
利用例
- 承認時にワークフローの申請内容をWebデータベースに登録・更新する
- 申請時に申請内容をメールで送信する
- 承認時に電子契約サービスと連携して電子契約書を顧客に送付する
業務ロジックの概要
後処理の業務ロジックを新規作成すると、初期状態では以下の図のように設定されています。
タスクを追加し、実現したい業務ロジックを作成してください。
後処理の業務ロジックには、処理の種別ごとの分岐が初期設定されています。
設定されている分岐条件と条件式は以下の通りです。
- 申請
${ $input.imwActionProcess.resultStatus == "apply" || $input.imwActionProcess.resultStatus == "applyfromtempsave" || $input.imwActionProcess.resultStatus == "applyfromunapply" }
- 再申請
${ $input.imwActionProcess.resultStatus == "reapply" }
- 承認
${ $input.imwActionProcess.resultStatus == "approve" || $input.imwActionProcess.resultStatus == "mattercomplete" }
- 取止め
${ $input.imwActionProcess.resultStatus == "discontinue" }
- 否認
${ $input.imwActionProcess.resultStatus == "deny" }
- 引戻し
${ $input.imwActionProcess.resultStatus == "pullback" || $input.imwActionProcess.resultStatus == "sendbacktopullback" }
- 差戻し
${ $input.imwActionProcess.resultStatus == "sendback" }
- 案件操作
${ $input.imwActionProcess.resultStatus == "matterhandle" }
特定の処理、例えば、申請処理を実行する際にのみ実行したい処理は、「分岐(申請)」タスクの then
から線をつなげるようにします。
複数の、または、すべての処理種別で同じ処理を実行する場合は、それぞれの分岐の then
から線をつなげてください。
図:申請時にのみ実行したい処理の場合
図:申請時と再申請時に実行したい処理の場合
後処理は、ワークフローのデータベーストランザクション内で実行されます。
そのため、業務ロジックの中で独自にデータベーストランザクション制御を行うことはできません。
JavaScriptユーザ定義タスクで、データベーストランザクション制御を伴う処理は実施しないでください。
入力値
入力値 | 型 | 説明 |
---|---|---|
imwProcessCommon | object | imwProcessCommonオブジェクト を参照 |
imwActionProcess | object | imwActionProcessオブジェクト を参照 |
imwUserParameter | object | imwUserParameterオブジェクト を参照 |
imwProcessCommonオブジェクト
ワークフローに関するパラメータを保持します。
入力値 | 型 | 説明 |
---|---|---|
localeId | string | 処理実行時のロケールID
|
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 |
imwActionProcessオブジェクト
ワークフローの処理者や処理結果などの情報を保持します。
入力値 | 型 | 説明 |
---|---|---|
actFlag | string | 代理フラグ
|
authCompanyCode | string | 権限会社コード |
authOrgzSetCode | string | 権限組織セットコード |
authOrgzCode | string | 権限組織コード |
authUserCd | string | 処理権限者コード 案件をログインユーザ本人の権限で処理 した場合は本人のユーザコードが、代理先として処理した場合は代理元のユーザコードが設定されます。 |
execUserCd | string | 処理実行者コード 実際に案件を処理したユーザのユーザコードです。 案件を代理先として処理した場合は、ログインユーザ(代理先ユーザ)のユーザコードが設定されます。 |
matterName | string | 案件名 |
matterNumber | string | 案件番号 申請の場合には取得できません。 |
nodeId | string | 処理が実行されたノードのノードID |
nextNodeIds | string[] | 移動先(次ノード)ノードID 処理種別が以下の場合に設定されます。
|
priorityLevel | string | 優先度
|
processComment | string | 処理コメント |
resultStatus | string | 処理結果ステータス
|
lumpProcessFlag | string | 一括処理フラグ
|
autoProcessFlag | string | 自動処理フラグ
|
DCNodeConfigModels | object[] | 動的・確認ノード設定情報の配列 |
HVNodeConfigModels | object[] | 横配置・縦配置ノード設定情報の配列 |
branchSelectModels | object[] | 分岐先選択情報の配列 |
権限会社コード、権限組織セットコード、権限組織コードは処理種別が以下の場合に設定されます。
- 申請・再申請・申請(一時保存)・申請(未処理)
- 取止め・承認・承認終了・否認・差戻し
動的・確認ノード設定情報、横配置・縦配置ノード設定情報、分岐先選択情報は処理種別が以下の場合に設定されます。
- 申請・再申請・申請(一時保存)・申請(未処理)・承認
DCNodeConfigModels
動的承認ノードと確認ノードの処理対象者の設定情報を保持します。
入力値 | 型 | 説明 |
---|---|---|
nodeId | string | 対象の動的承認ノード、または、確認ノードのノードID |
processTargetConfigs | object[] | 処理対象設定(プラグイン情報)の配列 |
processTargetConfigs
プラグインの拡張ポイントID、プラグインID、パラメータを保持します。
入力値 | 型 | 説明 |
---|---|---|
extensionPointId | string | プラグインの拡張ポイントID |
parameter | string | プラグインのパラメータ |
pluginId | string | プラグインのプラグインID |
HVNodeConfigModels
横・縦配置ノードの展開情報を保持します。
入力値 | 型 | 説明 |
---|---|---|
nodeId | string | 処展開対象の横配置・縦配置ノードのノードID(展開前のノードID) |
matterNodeExpansions | object[] | 横・縦配置ノードの展開情報の配列 |
matterNodeExpansions
横・縦配置ノードを展開する際に、展開されたノードのノード名や、そのノードの処理対象者情報を保持します。
入力値 | 型 | 説明 |
---|---|---|
nodeName | string | 展開されたノードのノード名 |
pluginModels | object[] | 処理対象者情報(プラグイン情報)の配列 |
pluginModels
プラグインの拡張ポイントID、プラグインID、パラメータを保持します。
入力値 | 型 | 説明 |
---|---|---|
extensionPointId | string | プラグインの拡張ポイントID |
pluginId | string | プラグインのプラグインID |
parameter | string | プラグインのパラメータ |
branchSelectModels
分岐開始方法が、「申請/処理時に分岐先を選択する」の場合、申請/処理時に分岐先として指定されたノードのIDを保持します。
入力値 | 型 | 説明 |
---|---|---|
branchStartNodeId | string | 分岐開始ノードのノードID |
forwardNodeIds | string[] | 分岐先のノードのノードID配列 |
imwUserParameterオブジェクト
フォームの入力情報を保持するユーザパラメータオブジェクトです。
画面アイテム「明細テーブル」、「グリッドテーブル」、「スプレッドシート」のテーブルのパラメータ名はテーブル識別IDです。
上記を除く入力アイテムのパラメータ名はフィールド識別IDです。
複数項目選択可能な画面アイテム(「チェックボックス」、「リストボックス」)は選択された値をカンマ区切りにして値が設定されます。
画面アイテム「ファイルアップロード」のアップロードファイル情報は含まれません。
ファイル情報の取得には「ファイルアップロード情報取得」タスクをご利用ください。
出力値
出力値 | 型 | 説明 |
---|---|---|
error | boolean | エラーフラグtrue を設定した場合、当処理をエラー終了します。処理が正常に終了した場合は false を設定してください。 |
message | string | 指定したメッセージをエラーメッセージとして画面に表示します。 ロケールごとにメッセージを用意する必要がなければこのプロパティを利用してください。 |
localizedMessages | object | 指定したメッセージをエラーメッセージとして画面に表示します。 アクション処理のコンテキストから解決されたロケールに一致するメッセージを使用します。 message が指定されている場合はこのプロパティは使用されません。 |
matterNumber | string | 案件番号を指定した値で上書きします 。 値の上書きは申請・再申請の場合にのみ行われます。 null の場合、案件番号は上書きされません。 |
localizedMessagesオブジェクト
出力値 | 型 | 説明 |
---|---|---|
ja | string | 日本語ロケールメッセージ |
en | string | 英語ロケールメッセージ |
zh_CN | string | 中国語ロケールメッセージ |
定数
定数ID | 説明 |
---|---|
FALSE | 出力値 error へのマッピングに利用する定数です。 |
imfrApplicationId | アプリケーションID 「ファイルアップロード情報取得」タスクの入力値等に使用します。 |
imwFlowId | フローID |
実装例
簡単な後処理の業務ロジック実装例をご紹介します。
この業務ロジックでは、承認時にワークフローの申請内容を特定のユーザにメールで送信します。
概要
図:業務ロジックの実装例
以下のタスクを使用しています。
- 汎用タスク > システム通知テキストメール送信
以下のユーザ定義タスクを作成して使用しています。
- テンプレート定義「メール本文作成」
処理の流れ・設定例
-
テンプレート定義を利用して、送信するメールの本文を作成します。 「ユーザ定義追加」から「テンプレート定義新規作成」を選択して、テンプレート定義「メール本文作成」を作成します。
-
テンプレート定義「メール本文作成」の入力値、テンプレートを設定します。 今回は、入力値で案件名(
matterName
)、案件番号(matterNumber
)、フォームの入力情報(name
、price
、notes
)を受け取り、テンプレートの所定の位置に埋め込みます。
テンプレートは以下のようにします。<#setting url_escaping_charset="UTF-8">
以下の物品購入申請が承認されました。
案件番号:${matterNumber}
案件名:${matterName}
物品名:${name}
価格:${price}
備考:${notes}備考テンプレート定義の詳細は以下を参照してください。
-
作成した「メール本文作成」タスクを配置します。 今回は、ワークフロー承認時にメールを送信するようにしたいため、「分岐(承認)」タスクの
then
から線を繋げます。 -
「メール本文作成」タスクのマッピング設定を行います。 案件名・案件番号・フォームの入力情報を業務ロジックの入力値から、「メール本文作成」タスクの入力値にマッピングします。
-
「システム通知テキストメール送信」タスクを用いて、メールを送信します。 「メール本文作成」タスクの返却値
output
をメール本文(body
)にマッピングします。
メール件名(subject
)と宛先ユーザ(toUserCds
)は定数に値を設定し、マッピングします。