TsuyoshiKusakaの日々思うこと その2

(株)クエステトラに所属、ITエンジニア、テニス好き、地域のお手伝いをいろいろ、@tsuyoshikusaka

zapier を使った Evernote と Questetra BPM Suite の連携

ツールについて

 

今回実現したこと

Evernote で、あるノートブックにノートを新規追加すると、Questetra BPM Suite の業務が開始する、というもの。
現時点での想定利用シーンとしては以下。かなりニッチだが、いろいろ応用できるはず。
  • スキャンスナップで書類をスキャンしたら Evernote を経由して、そのスキャンデータに対する仕事が Questetra BPM Suite で始まる

 

実現した仕組みの概要

Evernote でノートを新規追加
→ zapier が検知し、httpリクエストを送る
→ Questetra BPM Suite の業務(プロセス)を開始する
※ちなみに zapier と Questetra BPM Suite の接続部分を http リクエストではなく、メール送付(Email:Send outboud email)にすると、後述の「App」作成は不要で、設定はもっとカンタンで、メール送付のケースについてはこちらに情報あり。

f:id:tk_4dd:20140619122437p:plain

 

設定の詳細

  • Evernote 側の準備:zapier で監視するノートブック作っておく
  • Questetra BPM Suite 側準備 zapier で起動するプロセスモデルを作っておく(
「メッセージ開始イベント(HTTP)」というhttpリクエストの受け口が必要で、データの受け口として文字型データを1つ準備しておく)

さて、本題となる zaier の設定としては、大きく分けると以下の2つ

  • Questetra BPM Suite と接続するためのコネクタ(「Apps」)の作成

  • そのコネクタ(「Apps」)を使った連携設定(「Zap」)の作成

 

Questetra BPM Suite と接続するための「App」の作成

  1. フッタのメニューの「Developer Platform」に入る
  2. 「Apps」の一覧画面に切り替わるので、「Add New App」をクリック
  3. 「Tilte」に「Questetra BPM Suite」と入れ、「Description」には適当に説明を入れて「Save」クリック
  4. その「App」の設定画面に切り替わるので、アイコン画像を設定したい場合は「Edit Title, Image and Description」に入って設定
  5. 今回のトリガは Evernote 側になるので、アクションだけを設定する。「Actions」の「Add Your First Action」をクリック
  6. 「Name」に「new process start」、「Key」に「action_process_start」と入れ、「Description」には適当に説明を入れて「Save & Next」をクリック
  7. 「Action Fields」の設定画面に切り替わるので、以下の5項目を設定して「Next」をクリック(以下は左から「Label」「Key」「Type」で各項目は「Done」で保存)
     ・start URL、start_url、Unicode
     ・start processModelInfoId、start_process_model_info_id、Integer
     ・start nodeNumber、start_node_number、Integer
     ・start key、start_key、Unicode
     ・data title、data_title、Unicode
     ・data0 value、data_0_value、Unicode
  8. 「Where To Send Data」の設定画面に切り替わるので、「URL Route」に「http://api.example.com/v2/clients.json」を設定して「Save」クリック
    ※「URL Route」は必要としていないのでごまかしている

  9. 「Scripting API」の「Exit Code」をクリック

  10. 添付のスクリプトをコピペして「Save」クリックし、「Quick links」から「Back to app」をクリック

※パラメータを増やす場合にはAction Fieldsの追加とスクリプトの11行目あたりを増やす必要あり

 

スクリプトは以下

>>

var Zap = {
action_process_start_pre_write: function(bundle) {

var request = {
method: 'POST',
url: bundle.action_fields_full.start_url,
params: {
processModelInfoId: bundle.action_fields_full.start_process_model_info_id,
nodeNumber: bundle.action_fields_full.start_node_number,
key: bundle.action_fields_full.start_key,
title: bundle.action_fields_full.data_title,
'data[0].input': bundle.action_fields_full.data_0_value,
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/x-www-form-urlencoded'
},
auth: null,
data: null
};

return {
url: request.url,
method: request.method,
auth: request.auth,
headers: request.headers,
params: request.params,
data: request.data
};

}
};

<<

注意点としては、Questetra BPM Suite のデータ項目はプロセスモデルごとに変わるが、それに動的に追随するような「Apps」にはできない点
 

その「App」を使った「Zap」の作成

  1. Dashboard」に戻って「Make a New Zap」をクリック
  2. 「1 Choose a trigger and action」で、「Choose a Trigger app」で「Evernote」を、「Choose a Trigger」で「New Note」を選択。「Choose an Action app」で「Questetra BPM Suite」を、「Choose an Action」で「new process start」を選択。「Continue」をクリック
  3. 「2 Select a  Evernote account」で、連携させたい「Evernote」アカウントを選択して「Continue」をクリック
  4. 「3 Select a  Questetra BPM Suite account」では、特に設定がないのでContinue」をクリック
  5. 「4 Filter  Evernote triggers」で、監視対象とする「Notebook」を指定して、Continue」をクリック
  6. 「5 Match up  Evernote Note to  Questetra BPM Suite process start」で、「start URL」から「start key」には、Questetra BPM Suite 側の「メッセージ送信中間イベント(HTTP)」の設定を入力。「data title」には、「Insert field」から「Evernote」の「Title」を選択して、「data0 value」には、「Insert field」から「Evernote」の「URL」を選択して、Continue」をクリック
  7. 「6 Test this Zap」で、「Test Evernote Trigger」をクリックし、サンプルを選択して「Test Zap with this sample」クリック。テストがうまくいけばContinue」をクリック
  8. 「7 Name and turn this Zap on」で、「Name」に適当に名前を入れて、「Turn Zap On」をクリック

 

これで、連携設定が完了。Evernote 側でノートが増えれば、Questetra BPM Suite のプロセスが開始されるはず。

 

今後やりたいこと

  • zapier で作った Questetra BPM Suite 接続のための「Apps」をグローバル公開(業務プロセスモデルごとの細かなデータ設定はできないので共通データ項目のみのものになりそう、またここのページの説明によると簡単ではなさげ・・・)
  • zapier 側で対応されればになるが、Evernote の添付ファイルをそのまま http リクエストに乗せて送付させたい