ワークフロー承認後にメッセージを送信する
はじめに
ワークフロー申請を承認したときのイベント を使い、ワークフローの申請内容をメッセージ送信します。メッセージを送信する部分はGaroon SOAP APIを使用しています。
前提条件と注意事項
- このカスタマイズには、クラウド版Garoonまたはパッケージ版Garoon 4.10以降の環境が必要です。
- ワークフローJavaScriptカスタマイズは、JavaScriptを適用した後に申請されたワークフローが対象です。
それ以前に申請されたワークフローには適用されません。 - 代理承認時にカスタマイズが動作しない不具合を確認しています。(2019/2/21追記)
できること
ワークフローとメッセージを連携させることにより、送信前に上司の確認・承認をはさむことができます。
以前に紹介した掲示板連携と異なり、送信時に宛先を指定できるため、範囲を限定したお知らせや情報発信をできます。
完成イメージ
Garoonのワークフローを承認すると、申請内容がメッセージ送信されます。
- 「承認する」ボタンをクリックすると、指定した宛先に対してメッセージが送信されます。
宛先機能について
- メッセージの宛先を設定するために、JavaScriptカスタマイズ項目でカスタマイズしています。
- すべての組織をフラットにプルダウン表示し、組織をクリックすると、その下に組織の所属ユーザを一覧表示します。
- ユーザの一覧から、宛先として含めるユーザを「追加」ボタンで選択できます。
複数選択や別組織を選択してのユーザ追加が可能です。 - 「削除」ボタンはありません。すでに追加した宛先を削除するためには、画面上宛先を直接編集可能ですが、サンプルプログラムでは、編集されたことによる値が不正な状態となった場合の考慮はしません。
メッセージ側には特別な設定は不要です。
ワークフローの設定にのみ、JavaScriptファイルを設定しカスタマイズしていきます。
Garoonワークフローの設定手順
ワークフローの項目の内容は、会社によって異なります。
ここでは、サンプルということで、メッセージのSOAP APIで設定可能な項目をおおむね網羅した申請フォームにJavaScript / CSSカスタマイズを設定する流れを説明します。
ワークフローの申請フォームを作成する
まずは以下の項目を配置して、ワークフローの申請フォームを作成していきます。
申請フォームの作成方法については、Garoonヘルプ - 申請フォームの作成の流れ
クラウド版
・
パッケージ版
を参照してください。
申請フォームは、掲示板の項目と対応付けます。それぞれの項目は以下のとおり設定してください。
項目コードは、JavaScriptコード内でそれぞれの項目を指定するための一意の文字列になります。
| 項目名 | 項目タイプ | 項目コード | 必須 | 備考 |
|---|---|---|---|---|
| タイトル | 文字列(1行) | Title | 〇 | |
| 本文 | 文字列(複数行) | Body | 〇 | |
| 添付ファイル | ファイル添付 | Attach | 5つまで登録可能とします。 | |
| 宛先 | 文字列(複数行) | SendTo | 〇 | |
| - | JavaScriptカスタマイズ項目 | select_to | 「直前の項目に続けて、右隣に配置する」を選択します。 宛先を設定するためのカスタマイズ部品を配置します。 |
|
| 閲覧状況を確認する | チェックボックス | Confirm |
上記のとおり設定が完了したら、土台となる申請フォームの作成は完了です。
JavaScript / CSSファイルを適用する
申請フォームの作成が完了したので、ここから作成した申請フォームにJavaScriptファイルを適用していきます。
適用ファイルの準備
次のサンプルコードをエディタにコピーして、ファイル名を「wf_to_msg.js」、文字コードを「UTF-8」で保存します。
ファイル名は任意ですが、ファイルの拡張子は「js」にしてください。
|
|
ポイント
- ワークフロー申請フォームでは、ユーザを選択する項目タイプがありません。
そのため、今回のサンプルでは、文字列(複数行)項目に対して選択ユーザを追加するカスタマイズを行います。該当箇所を抜粋します。
① 組織情報をエクスポートする を使用して検索し、以下のように組織一覧を元にドロップダウンフィールドを作成しています。
|
|
②ドロップダウンで選択した組織に所属するユーザを、 組織の所属ユーザーを取得する を使用して検索し、以下のようにユーザ一覧を元に複数選択フィールドを作成しています。
|
|
③ユーザ一覧で選択したユーザを、宛先フィールドに反映します。
-
request.approve.submit.successイベントに実装することにより、承認が行われた後に起動する処理を作成します。 -
宛先に指定したユーザのログイン名を、 ユーザー情報を取得する でGaroonのユーザIDへ変換し、SOAPリクエストパラメーターに設定しています。
349 350 351 352 353 354 355 356 357 358 359 360 361 362// ワークフロー承認イベントで起動する // 申請内容をメッセージに登録する garoon.events.on('workflow.request.approve.submit.success', (event) => { // 申請内容を取得する const request = event.request; // ログイン名:氏名<改行>ログイン名:氏名 ... の形式で宛先は設定されている前提 // 改行で分割 const userNms = []; const sendTo = request.items.SendTo.value.split('\n'); for (let iy = 0; iy < sendTo.length; iy++) { // [:]の前をユーザIDとして切り出す userNms.push(sendTo[iy].split(':')[0]); } -
送信者は申請者ではなく、承認者になります。申請者名義での送信はできないため、タイトルに申請者名を明記しています。
403 404 405 406 407 408// 送信するメッセージパラメータを作成 let msgAddParam = MSG_ADD_TEMPLATE; msgAddParam = msgAddParam.replace('${REQUEST_TOKEN}', escapeHtml(requestToken)); msgAddParam = msgAddParam.replace('${ADDRESSEE}', userParams.join('')); // ユーザID msgAddParam = msgAddParam.replace('${SUBJECT}', request.items.Title.value + '(申請者:' + request.applicant.name + ')'); // 表題
JavaScript / CSSファイルとして使用するファイルのおよびリンクの追加
-
「申請フォーム情報」部分の右端にある「JavaScript / CSSによるカスタマイズ」をクリックします。
申請フォームの詳細画面に「JavaScript / CSSによるカスタマイズ」というリンクが表示されない場合、ワークフローのカスタマイズが許可されていません。
Garoonヘルプ - ワークフローのカスタマイズを許可する( クラウド版・ パッケージ版
)を参考に、カスタマイズを許可してください。
-
[カスタマイズ]項目に「適用する」を選択します。wf_to_msg.jsが使用するjQuery、Luxon、および作成した「wf_to_msg.js」ファイルを追加し、「設定する」をクリックします。
本カスタマイズでは、 Cybozu CDN の以下のライブラリーを使用します。
- jQuery
https://js.cybozu.com/jquery/3.6.4/jquery.min.js - Luxon
https://js.cybozu.com/luxon/3.3.0/luxon.min.js
jQuery、Luxonはwf_to_msg.jsより上位に登録してください。
以上ですべての設定は完了です。最初にお見せした完成イメージのとおり、動けば成功です。
おわりに
Garoon APIのカスタマイズサンプル ワークフローとメッセージとの連携方法を紹介しました。
ワークフローの承認実行のタイミングでGaroon内の別アプリにデータを登録することが簡単にできます。
更新履歴
- 2022年2月1日
添付ファイルのIDを取得する処理を、workflow.request.approve.submit.successイベントのワークフローオブジェクトを使う方法から、 SOAP API(受信した申請を取得する) を使う方法に変更 - 2024年9月25日
エラーハンドリング関数を追加
このTipsは、2024年9月版Garoonで動作を確認しています。
