9.3. ワークフローの処理時に特定のSlackチャンネルに通知する¶
このチュートリアルでは、到達処理と案件終了処理の2種類の業務ロジックを作成します。
以下の画像のように、ワークフローの案件番号・案件名、および、どのユーザが何の処理を行ったかがSlackに通知されます。
9.3.1. 事前準備¶
9.3.2. ワークフローの作成¶
9.3.3. 業務ロジック(到達処理)の作成¶
コラム
業務ロジックの作成は「Accel-Mart Quick アプリケーション管理者」ロールを持つユーザで行ってください。
テンプレートユーザ定義を用いて、Slackに通知するメッセージ文を作成します。
「メッセージ送信」タスクを使用し、作成したメッセージをSlackに送信します。
- 申請
- 再申請
- 引戻し
- 承認(案件が終了する場合を除く)
- 差戻し
- 案件操作(案件が終了する場合を除く)
9.3.3.1. 到達処理の業務ロジックを新規作成する¶
「IM-BIS-フロー編集」画面の「業務ロジック」をクリックします。
「業務ロジック」画面が表示されます。
「到達処理」の「新規作成」ボタンをクリックし、「業務ロジック登録 - 到達処理」画面を開きます。
- 業務ロジック名を入力し、対象ノードを選択します。今回は、「終了」以外のノードに到達した際に業務ロジックを実行するようにしたいので、「終了」以外にチェックを入れます。
「登録」ボタンをクリックします。
「ロジックフロー定義編集」画面が表示されます。
9.3.3.2. 定数を追加する¶
「ロジックフロー定義編集」画面上部、ヘッダ内の「定数設定」をクリックします。
「定数設定」ダイアログが表示されます。「定数を追加」をクリックします。
下記の定数を追加します。
定数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}前ノードの処理名を取得するために使用します。
9.3.3.3. ユーザ定義タスクを作成する¶
画面左側のパレットの「ユーザ定義追加」→「テンプレート定義新規作成」をクリックします。
ユーザ定義ID、ユーザ定義名を入力します。本チュートリアルでは次のように設定します。
- ユーザ定義ID:slack_message_template
- ユーザ定義名:Slack通知メッセージ作成
任意のユーザカテゴリを「検索」から選択、または、「新規作成」します。
入力値に初期設定されている値を全削除し、 data<object> の配下に次の値を追加します。
「標準」欄に以下の内容を入力します。初期入力されているテンプレートを上書きしてください。
<#setting url_escaping_charset="UTF-8"> ${authUserName}さんが次のワークフロー案件を${resultStatusName}しました。 案件番号:${matterNumber} 案件名: ${matterName} 合計額:${total}円
コラム
${XXX} の部分が入力値として渡ってきた値で置換されます。テンプレート定義の詳しい説明は「初期サンプルから見るユーザ定義(テンプレート)の詳細」を参照してください。「登録」ボタンをクリックします。
テンプレート定義を作成できました。
9.3.3.4. タスクを配置する¶
- Slack連携 > メッセージ送信
- 「ユーザ定義タスクを作成する」で作成したユーザ定義タスク
コラム
タスクを配置する詳しい操作方法は「エレメントを配置する」を参照してください。
9.3.3.5. タスクのマッピング設定をする¶
コラム
マッピング設定の詳しい操作方法は「マッピング設定を行う」を参照してください。
- 作成したテンプレートユーザ定義を用いて、Slackに送信するメッセージ文を作成します。ユーザ定義タスク「Slack通知メッセージ作成(slack_message_template1)」のマッピング設定を以下の通り行います。
Slack通知メッセージ作成(slack_message_template1) 始点 終点 (※コラムに記載) slack_message_template1<object> - data<object> - authUserName<string> (※コラムに記載) slack_message_template1<object> - data<object> - resultStatusName<string> 入力<object> - matterName<string> slack_message_template1<object> - data<object> - matterName<string> 入力<object> - matterNumber<string> slack_message_template1<object> - data<object> - matterNumber<string> business_data_select<object> - formaItemInfo<object> - total<bigdecimal> slack_message_template1<object> - data<object> - 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>
ただし、そのままマッピングしてもEL式を解決できないため、マッピング関数「 el 」を使用します。- EL式の詳細は「EL式」を参照してください。
- マッピング関数の使い方については「マッピング関数の利用」を参照してください。
図:Slack通知メッセージ作成(slack_message_template1)のマッピング設定コラム
business_data_select<object> は初期状態ではマッピング設定の入力値に設定されていません。「様々な入力情報の利用」を参考に、マッピング設定の入力値に追加してください。 - 作成したメッセージ文をSlackに送信します。「メッセージ送信(im_slackPostMessage1)」のマッピング設定を以下の通り行います。
メッセージ送信(im_slackPostMessage1) 始点 終点 定数<object> - channel<string> im_slackPostMessage1 - channel<string> slack_message_template1<object> - output<string> im_slackPostMessage1 - text<string> 定数<object> - token<string> im_slackPostMessage1 - token<string> 以上で到達処理の業務ロジックの設定は完了です。業務ロジックを保存してください。
コラム
この段階で業務ロジックをデバッグ実行することをおすすめします。デバッグ機能の使い方は「ロジックフローのデバッグ」を参照してください。なお、デバッグ実行の際にもSlackにメッセージが送信されますので、注意してください。
9.3.4. 業務ロジック(案件終了処理)の作成¶
最終承認
取止め
否認
案件操作(終了ノードへの移動)
コラム
「取止め」「否認」が行われた場合、到達処理は実行されません。「取止め」「否認」の場合にもSlackに通知するために、案件終了処理を使用します。
9.3.4.1. 案件終了処理の業務ロジックを新規作成する¶
「業務ロジック」画面を表示します。
「案件終了処理」の「新規作成」ボタンをクリックし、「業務ロジック登録 - 案件終了処理」画面を開きます。
- 業務ロジック名を入力し、「登録」ボタンをクリックします。
「ロジックフロー定義編集」画面が表示されます。
9.3.4.2. 定数を追加する¶
定数ID 定数値 説明 channel (メッセージを送信するSlackチャンネル) 「Accel-Mart QuickからSlackにメッセージを送信する」でアプリを追加したチャンネルのチャンネルID、または、チャンネル名を指定します。 token (Bot User OAuth Token) 「Accel-Mart QuickからSlackにメッセージを送信する」で発行した「Bot User OAuth Token」を指定します。 authUserName ${$input.imwMatterEndProcess.mailReplaceMap.Auth_User_Nm} 前ノードを処理したユーザの名前を取得するために使用します。 lastResult ${$input.imwMatterEndProcess.mailReplaceMap.Last_Result} 最終処理結果を取得するために使用します。
9.3.4.3. ユーザ定義タスクを作成する¶
「ユーザ定義タスクを作成する」の手順を参考に、テンプレート定義を作成します。
コラム
「ユーザ定義編集」で「ユーザ定義IDを新しく割り当てて複製する」にチェックを入れると、既存のユーザ定義をコピーしたユーザ定義が作成できます。ユーザ定義ID、ユーザ定義名を入力します。本チュートリアルでは次のように設定します。
- ユーザ定義ID:slack_message_template_matter_end
- ユーザ定義名:Slack通知メッセージ作成【案件終了】
ユーザカテゴリ・入力値は到達処理で作成したテンプレート定義と同様に設定してください。
「標準」欄に以下の内容を入力します。初期入力されているテンプレートを上書きしてください。
<#setting url_escaping_charset="UTF-8"> ${authUserName}さんが次のワークフロー案件を${resultStatusName}したため、案件が終了しました。 案件番号:${matterNumber} 案件名: ${matterName} 合計額:${total}円
「登録」ボタンをクリックします。
テンプレート定義を作成できました。
9.3.4.4. タスクを配置する¶
9.3.4.5. タスクのマッピング設定をする¶
- ユーザ定義タスク「Slack通知メッセージ作成【案件終了】(slack_message_template_matter_end1)」のマッピング設定を以下の通り行います。
Slack通知メッセージ作成(slack_message_template_matter_end1) 始点 終点 (※コラムに記載) slack_message_template_matter_end1<object> - data<object> - authUserName<string> (※コラムに記載) slack_message_template_matter_end1<object> - data<object> - resultStatusName<string> 入力<object> - imwMatterEndProcess<object> - matterName<string> slack_message_template_matter_end1<object> - data<object> - matterName<string> 入力<object> - imwMatterEndProcess<object> - matterNumber<string> slack_message_template_matter_end1<object> - data<object> - matterNumber<string> business_data_select<object> - formaItemInfo<object> - total<bigdecimal> slack_message_template_matter_end1<object> - data<object> - total<integer> コラム
authUserName<string> 、および、 resultStatusName<string> は、入力の mailReplaceMap<map> (メール置換文字情報)から取得します。到達処理と同様に、定数に設定した以下のEL式を解決した値を slack_message_template_matter_end1 の入力値にマッピングします。- ${$input.imwMatterEndProcess.mailReplaceMap.Auth_User_Nm} → authUserName<string>
- ${$input.imwMatterEndProcess.mailReplaceMap.Last_Result} → resultStatusName<string>
図:Slack通知メッセージ作成【案件終了】(slack_message_template_matter_end1)のマッピング設定 - 「メッセージ送信(im_slackPostMessage1)」のマッピング設定を以下の通り行います。
メッセージ送信(im_slackPostMessage1) 始点 終点 定数<object> - channel<string> im_slackPostMessage1 - channel<string> slack_message_template_matter_end1<object> - output<string> im_slackPostMessage1 - text<string> 定数<object> - token<string> im_slackPostMessage1 - token<string> 以上で案件終了処理の業務ロジックの設定は完了です。業務ロジックを保存してください。
コラム
この段階で業務ロジックをデバッグ実行することをおすすめします。デバッグ機能の使い方は「ロジックフローのデバッグ」を参照してください。なお、デバッグ実行の際にもSlackにメッセージが送信されますので、注意してください。
9.3.5. 作成したワークフローを申請・承認する¶
メニューの「申請」から、「申請一覧」画面を表示します。
作成したワークフローを選択します。
必要項目を入力して、申請します。
- Slackにメッセージが送信されていることを確認します。実行されるのは到達処理のため、到達処理で使用したテンプレート定義の文章で送信されています。
Accel-Mart Quickに戻り、メニューの「承認」から「案件一覧」画面を表示します。
申請した案件にマウスカーソルを重ねて、「処理」アイコンをクリックします。
- 「承認」ボタンをクリックして、承認します。このチュートリアルのワークフローには承認ノードが1つしかないため、この時点で案件が終了します。
- Slackにメッセージが送信されていることを確認します。実行されるのは案件終了処理のため、案件終了処理で使用したテンプレート定義の文章で送信されています。