こんちちは、技術1課の千葉です。
サーバーワークスでは業務フローの見える化を目的に、クラウド型ワークフローサービスの Questetra BPM Suite(http://www.questetra.com/) を導入しています。
簡単なところでは、当ブログのアカウント申請や、SSL証明書の更新申請をしたり、重いものでは法律事務所さんも含めた契約関係書類のレビューにも Questetra BPM Suite を利用しています。 (以下、Questetra)
また、ワークフローとは別に、社内のタスクの見える化を目的に、クラウド型タスク管理サービスの Trello(https://trello.com/) を導入しています。
Trelloは、ひとつのボードに Todo、Doing、Done 等のリストを設けて、そこにタスクを記載したカードを作成し、優先順位を設定することが可能です。
例えば、マネージャ陣からのアイデアは『課長・役員ボード』と呼ばれるボードにある『アイデア』リストにカードを作成します。
スマホアプリからも簡単にカードが作成できるので、食事しているときなんかに思いついたアイデアをサクッとカードにしておくことが可能です。
おかげで、日々多くのカードが『アイデア』リストに追加され、役員により『次回の会議の議題』『実行中』のリストだったり、『却下』『永遠のテーマ』といったリストへと送られています。
さて、前置きが長くなってしまいました。
プロジェクトを進めていくなかで、お客さまより頂いたご質問の回答に、当ブログの記事をご案内することがあるのですが、たまに当ブログでご紹介していない内容のご質問をいただくことがあります。
ブログに書き起こしている余裕があれば良いのですが、そうではない場合は、別途資料を作成するなどして対応しています。
しかし、これではナレッジが個人に残ってしまう為、別のメンバーが同様のご質問を頂いた際にも資料を作成してしまう。なんてことが起きてしまいます。
この問題は仕組みで解決できるハズだと考え、今回の環境を構築してみました。
イメージは↓こんな感じです。
- 依頼者は、ブログに書き起こして欲しい内容を Questetra から依頼する
- Questetraは、依頼内容のTrelloカードを作成する
- Questetraは、依頼内容をSlackに通知する
- 執筆者は、Slackの通知を確認する
- 執筆者は、Trelloカードを『未着手』リストから『執筆中』リストへ移動する
Questetra のワークフロープロセス図は↓こちらです。
Questetra のプロセスデータの項目は以下のとおりです。
Questetra Data No |
項目 | 型 |
---|---|---|
- | 件名 | 文字:単一行 |
1 | 依頼事項 | 文字:複数行 |
2 | Trelloへの送信メッセージ | 文字:複数行 |
3 | Trelloへの送信URL | 文字:単一行 |
4 | Slackへの通知メッセージ | 文字:複数行 |
依頼者が入力するのは『件名』『依頼事項』の2点のみで、それ以外の3項目は Trello API / Slack API に値を値を格納する為の変数として利用します。
それでは、各ワークフローのプロパティを設定していきましょう。
1. 依頼
イベントは ヒューマンタスク を利用しています。
『件名』『記事に対する依頼事項』のみを 編集可 として、他は 表示なし とします。
2. Trelloへの送信URL作成
イベントは サービスタスク (データ設定) を利用しています。
Ttrelloのカードの『Link』に登録するURLを作成します。
『値もしくは〜』に Trelloへの送信URL を選択、値には以下の内容を登録してください。
https://xxxxxxxx.questetra.net/OR/ProcessInstance/viewPrint?forManager=false&processInstanceId=#{processInstanceId}
xxxxxxxx の部分は、ご利用しているQuestetraのURLをご確認ください。
#{processInstanceId} は、QuestetraのワークフローIDを指しています。
3. Trelloへの送信メッセージ作成
イベントは サービスタスク (データ設定) を利用しています。
Ttrelloのカードの『Description』に登録する値を作成します。
『値もしくは〜』に Trelloへの送信メッセージ を選択、値には以下の内容を登録してください。
#{data['1']} ----- #{processInstanceInitQuserName}
data['1'] は、の数字はプロセスデータの Questetra Data No を指しており、ここでは1を設定しているので依頼事項の値を取得します。
#{processInstanceInitQuserName} は、Questetraのワークフロー作成者の名前を指しています。
4. Trelloのカード作成APIを実行
イベントは メッセージの開始イベント (HTTP) を利用しています。
まず、通信設定タブの『アクセスURL』に https://trello.com/1/cards を入力して、
『HTTP Method』に POST(multipart/from-data) を選択します。
つぎに、送信パラメータタブをひらき、以下の項目を追加します。
Trello API Key、Tokenは https://trello.com/1/appKey/generate から発行できます。
リストのIDについては https://developers.trello.com/advanced-reference を参照ください。
パラメータ名 | 値 |
---|---|
key | Trello API Keyの値 |
token | Trello API Tokenの値 |
idList | カードを作成するリストのID |
name | 件名 (プルダウンから選択) |
desc | Trelloへの送信メッセージ (プルダウンから選択) |
urlSource | Trelloへの送信URL (プルダウンから選択) |
5. Slackへの通知メッセージ作成
イベントは サービスタスク (データ設定) を利用しています。
Slackへの通知メッセージを作成します。
『値もしくは〜』に Slackへの通知メッセージ を選択、値には以下の内容を登録してください。
#{processInstanceInitQuserName} さんから技術ブログの執筆依頼がありました。 タイトル: #{processInstanceTitle} https://trello.com/b/yyyyyy/techblog-requests
#{processInstanceInitQuserName} は、Questetraのワークフロー作成者の名前を指しています。
#{processInstanceTitle} は、Questetraのワークフローの件名を指しています。
yyyyyy は、ご利用しているTrelloのURLをご確認ください。
techblog-requests は、Trelloのボード名を指しています。
6. Slackへの通知APIを実行
イベントは メッセージの開始イベント (HTTP) を利用しています。
まず、通信設定タブの『アクセスURL』に https://slack.com/api/chat.postMessage を入力して、
『HTTP Method』に POST(multipart/from-data) を選択します。
つぎに、送信パラメータタブをひらき、以下の項目を追加します。
Slack API Tokenは https://api.slack.com/web から発行できます。
パラメータ名 | 値 |
---|---|
token | Slack API Tokenの値 |
channel | 通知を投稿するSlackチャンネル |
text | Slackへの通知メッセージ (プルダウンから選択) |
icon_emoji | 投稿時のアイコン絵文字 (省略可能) |
username | 投稿時のユーザー名 (省略可能) |
以上で設定は完了しました。
早速動かしてみましょう。
動作確認-1. Questetraから依頼を実施
動作確認-2. Trelloの『未着手』リストにカードが作成される
動作確認-3. Slackの #blog チャンネルに通知される
ちなみに、Auroraの記事のリクエストは ↓ 多田さんが投稿してくれました。
Auroraの技術や機能ついてまとめてみる
サーバーワークスでは、課題や問題を 仕組み で解決することを善としています。
クラウドサービスを組み合わせた仕組み作りに興味をお持ちの方は、ぜひ↓こちらをクリック!!