ワークフローの処理時に特定のSlackチャンネルに通知する
ワークフローの案件開始、承認や差戻しによるノード移動、案件終了の際にSlackに通知する業務ロジックを作成する方法を解説します。
この業務ロジックを作成することにより、特定のワークフローの状況をSlackでモニタリングできます。
- このチュートリアルでは、到達処理と案件終了処理の2種類の業務ロジックを作成します。
- 以下の画像のように、ワークフローの案件番号・案件名、および、どのユーザが何の処理を行ったかがSlackに通知されます。
事前準備
「Slack連携を行う - Accel-Mart QuickからSlackにメッセージを送信する」の手順に従って「Bot User OAuth Token」を発行してください。
ワークフローの作成
「Accel-Mart Quick ワークフロー管理者」ロールを持つユーザでSlackと連携するワークフローを作成します。
作成済みのワークフローと連携する場合は、そのワークフローの「IM-BIS-フロー編集」画面を表示してください。
このチュートリアルでは、「簡単なワークフローを作成する」で作成するフローを例に解説します。
業務ロジック(到達処理)の作成
Slackへメッセージを送信する業務ロジックを作成します。
業務ロジックの作成は「Accel-Mart Quick アプリケーション管理者」ロールを持つユーザで行ってください。
作成する業務ロジックでは、以下の処理を行います。
- テンプレートユーザ定義を用いて、Slackに通知するメッセージ文を作成します。
- 「メッセージ送信」タスクを使用し、作成したメッセージをSlackに送信します。
また、作成する業務ロジックは、以下のタイミングで実行されます。案件が終了するタイミングでは、この次に作成する案件終了処理が実行されます。
- 申請
- 再申請
- 引戻し
- 承認(案件が終了する場合を除く)
- 差戻し
- 案件操作(案件が終了する場合を除く)
到達処理の業務ロジックを新規作成する
-
「IM-BIS-フロー編集」画面の「業務ロジック」をクリックします。
注記「業務ロジック」が表示されない場合は、「定義の反映」をクリックしてください。
また、フォームを編集した場合も必ず「定義の反映」を実行してください。 -
「業務ロジック」画面が表示されます。
-
「到達処理」の「新規作成」ボタンをクリックし、「業務ロジック登録 - 到達処理」画面を開きます。
-
業務ロジック名を入力し、対象ノードを選択します。 今回は、「終了」以外のノードに到達した際に業務ロジックを実行するようにしたいので、「終了」以外にチェックを入れます。
ヒント「終了」ノードに到達する際の処理は、この次に作成する案件終了処理で実装します。
案件終了処理と重複して処理が実行されてしまわないように、「終了」ノードは到達処理の対象外にします。 -
「登録」ボタンをクリックします。
-
「ロジックフロー定義編集」画面が表示されます。
定数を追加する
業務ロジックで使用する定数を追加します。
-
「ロジックフロー定義編集」画面上部、ヘッダ内の「定数設定」をクリックします。
-
「定数設定」ダイアログが表示されます。「定数を追加」をクリックします。
-
下記の定数を追加します。
定数ID 定数値 説明 channel
(メッセージを送信するSlackチャンネル) 「Accel-Mart QuickからSlackにメッセージを送信する」でアプリを追加したチャンネルのチャンネルID、または、チャンネル名を指定します。 token
(Bot User OAuth Token) 「Accel-Mart QuickからSlackにメッセージを送信する」で発行した「Bot User OAuth Token」を指定します。 authUserName
${$input.mailReplaceMap.Auth_User_Nm}
前ノードを処理したユーザの名前を取得するために使用します。 beforeProcessName
${$input.mailReplaceMap.Before_Proc_Nm}
前ノードの処理名を取得するために使用しま す。
ユーザ定義タスクを作成する
Slackに送信するメッセージ文を作成するユーザ定義タスクを作成します。
-
画面左側のパレットの「ユーザ定義追加」→「テンプレート定義新規作成」をクリックします。
-
ユーザ定義ID、ユーザ定義名を入力します。本チュートリアルでは次のように設定します。
- ユーザ定義ID:slack_message_template
- ユーザ定義名:Slack通知メッセージ作成
-
任意のユーザカテゴリを「検索」から選択、または、「新規作成」します。
-
入力値に初期設定されている値を全削除し、
data<object>
の配下に次の値を追加します。authUserName<string>
resultStatusName<string>
matterName<string>
matterNumber<string>
total<integer>
ヒントtotal
はワークフローで申請された内容をSlackに送信するメッセージに表示する方法を解説するために使用します。
このチュートリアルでは、例としてフォームの「合計額」という項目をメッセージに表示します。
total
という項目は連携するワークフローに合わせて適宜変更、または、削除してください。 -
「標準」欄に以下の内容を入力します。初期入力されているテンプレートを上書きしてください。
<#setting url_escaping_charset="UTF-8">
${authUserName}さんが次のワークフロー案件を${resultStatusName}しました。
案件番号:${matterNumber}
案件名: ${matterName}
合計額:${total}円備考${XXX}
の部分が入力値として渡ってきた値で置換されます。
テンプレート定義の詳しい説明は「初期サンプルから見るユーザ定義(テンプレート)の詳細 」を参照してください。 -
「登録」ボタンをクリックします。
-
テンプレート定義を作成できました。
タスクを配置する
業務ロジックで使用するタスクを配置します。
以下の図のように、タスクをつなぎ合わせてください。
「業務データ取得」タスクは初期配置されているものをそのまま使用します。
使用するタスクは以下の通りです。
- Slack連携 > メッセージ送信
- 「ユーザ定義タスクを作成する」で作成したユーザ定義タスク
タスクを配置する詳しい操作方法は「エレメントを配置する 」を参照してください。
作成したユーザタスクは、作成する際に選択したユーザカテゴリに追加されています。
また、ユーザ定義タスクを含む各タスクはパレット上部の「パレット内検索」を利用して検索できます。
タスクのマッピング設定をする
各タスクに入力値として渡す値を設定するため、マッピング設定を行います。
マッピング設定の詳しい操作方法は「マッピング設定を行う 」を参照してください。
-
作成したテンプレートユーザ定義を用いて、Slackに送信するメッセージ文を作成します。 ユーザ定義タスク「Slack通知メッセージ作成(slack_message_template1)」のマッピング設定を以下の通り行います。
始点 終点 (※ヒントに記載) slack_message_template1 - data - authUserName<string>
(※ヒントに記載) slack_message_template1 - data - resultStatusName<string>
入力 - matterName<string>
slack_message_template1 - data - matterName<string>
入力 - matterNumber<string>
slack_message_template1 - data - matterNumber<string>
business_data_select - formaItemInfo - total<bigdecimal>
slack_message_template1 - data - total<integer>
ヒントauthUserName<string>
、および、resultStatusName<string>
は、入力のmailReplaceMap<map>
(メール置換文字情報)から取得します。
mailReplaceMap
には、ワークフロー関連のメール(処理依頼メールなど)に使用される置換文字情報が格納されています。-
mailReplaceMap
の置換文字列と置換内容の詳細は、「IM-Workflow 仕様書 別紙」を参照してください。
slack_message_template1
の入力値には、それぞれ以下のEL式を解決した値をマッピングします。-
${$input.mailReplaceMap.Auth_User_Nm}
→authUserName<string>
-
${$input.mailReplaceMap.Before_Proc_Nm}
→resultStatusName<string>
「定数を追加する」で定数
authUserName
・beforeProcessName
に上記内容を設定しています。
ただし、そのままマッピングしてもEL式を解決できないため、マッピング関数「el
」を使用します。- EL式の詳細は「EL式 」を参照してください。
- マッピング関数の使い方については「マッピング関数の利用 」を参照してください。
-