本記事では kintone レコードの日時データをトリガーに Questetra のプロセスを起動し、自動処理を行う方法について説明します。

kintone は、サイボウズ社が提供しているクラウドデータベースサービスです。自社や部署ごとのニーズに合わせた業務データベースを、作成・運用できます。また、API を使って各種操作を行うこともでき、今回紹介する自動工程も API を用いています。

kintone について、詳しくは kintone の公式ヘルプページをご覧ください。

各自動工程について

kintone に関する自動工程には、「開始: kintone レコード 日時フィールド」「選択肢データの一括取得」「ファイルダウンロード」「ファイルアップロード」「レコード追加」「レコード削除」「レコード取得」「レコード更新」があります。今回はそのうち、「開始: kintone レコード 日時フィールド」「レコード取得」「レコード更新」の3種を取り上げます。

まず、各工程について簡単に説明します。

開始: kintone: レコード 日時フィールド

開始: kintone: レコード 日時フィールドの設定画面

kintone レコードの日時フィールドをトリガーとして、Questetra のプロセスを自動起動する開始イベントです。対象とする kintone アプリと日時フィールドを指定します。日時フィールドの時刻を経過したレコードがあると、Questetra のプロセスが自動起動します。日時フィールドとして、「作成日時」「更新日時」を指定することも可能です。

kintone アプリにはカレンダー形式表示があります (下記参照)。指定した日時フィールドに従って、カレンダー上にレコードを表示させることができます。つまりこのイベントを使えば、カレンダー上に表示されるレコードに従って、プロセスを自動起動することができます。

kintone: レコード取得

レコード取得工程の設定画面

kintone のアプリ(データベース)のレコード(業務データ)を取得します。指定したフィールドのデータはデータ項目にそれぞれ保存されます。

kintone: レコード更新

レコード更新工程の設定画面

kintone アプリのレコードを更新します。更新するレコードのレコード ID をデータ項目で指定します。

kintone と Questetra の連携設定

自動工程を使用するには、kintone アプリで API トークンを生成し、Questetra の認証設定に保存しておく必要があります。

まず、kintone アプリで API トークンを生成します。本記事のサンプルアプリで必要となる手順については後ほど説明しますが、API トークン生成についての一般的な手順は下記ページを参照してください。

APIトークンを生成する

Questetra の kintone 連携アイテムで「C1: API トークンを設定した認証設定」にある「設定はこちらから」ボタンを選択します。

次に「追加」ボタンから kintone の HTTP 認証設定を行います。「トークン直接指定」をドロップダウンリストから選択します。「名前」に適当な名前を、「トークン」に先ほど kintone のアプリで生成したトークンを入力し、「保存」します。

サンプルアプリの概要

kintone 側のサンプルアプリ
Questetra 側のサンプルアプリ

このアプリは、請求予定日時に請求額を請求先へメールで送信するためのものです。請求データを kintone に保存することで、一覧で参照しやすい、検索しやすいといったメリットがあります。Questetra の「メッセージ送信中間イベント(メール)」を利用することで、請求予定日になったタイミングで請求を送信することができます。

kintone 側の設定

処理済み/未処理の状況を kintone からも確認できるようにするため、レコードに Questetra のプロセス詳細を確認できる URL を保存します。

1. kintone アプリを作成する

kintone ポータルのアプリブロックの「+」ボタンをクリックします。

本記事では、初めから作成するため、「はじめから作成(Create App from Scratch)」を選択します。

下表の各フィールドをフォームにドラッグアンドドロップし、フィールド名とフィールドコード、その他の設定を行います。

参考)フィールドコードの設定手順

フィールド名フィールドタイプフィールドコードその他の設定
請求額*数値 / Number請求額「必須項目にする(Required field)」にチェックを入れます。
会社名文字(1行) / Text会社名
連絡先*リンク / Link連絡先「必須項目にする(Required field)」にチェックを入れます。「入力値の種類」は「メールアドレス」を選択します。
請求予定日時*日時 / Date time請求予定日時「必須項目にする(Required field)」にチェックを入れます。
プロセス URLリンク / Linkプロセス_URL「入力値の種類」は「Webサイトのアドレス」を選択します。

2. API トークンを作成する

kintone と Questetra を連携するための API Token を作成します。アプリの設定画面の「設定(App Settings)」のタブを開き、「API トークン(API Token)」へと進みます。

「レコード参照(View records)」「レコード編集(Edit records)」にチェックを付け、「生成する(Generate)」をクリックし、下記3つの情報をメモしておきます。

  • API トークン
  • ドメイン(xxxxx.kintone.com または xxxxx.cybozu.com)
  • アプリ ID(数字)

その後、忘れずに「保存(Save)」をクリックします。

次の画面で表示される「アプリを更新(Update App)」をクリックするのも忘れないようにしてください(クリックしないと API トークンが保存されません)。

カレンダー形式表示の設定

「アプリの設定」から「一覧」を開き、「+」ボタンをクリックし、

「レコード一覧の表示形式」から「カレンダー形式」をチェックし、日付を「請求予定日時」、タイトルを「会社名」として保存します。

Questetra 側の設定

アプリを作成し、ワークフロー図とデータ項目を下記のように設定します。

自動工程を使って作成したサンプルアプリ

一番左の「開始: kintone: レコード 日時フィールド」は、開始イベントのパレットの中にあります。左から3つ目の「メッセージ送信中間イベント(メール)」は、 中間イベントのパレットの中にあります。

データ項目タイプ必須説明
件名プロセスの件名です。
レコード ID 文字列(単一行)「プロセス開始」の工程で kintone レコードの ID を保存するためのデータ項目です。保存した ID を「レコード取得」「レコード更新」で使用します。 
会社名文字(単一行)「レコード取得」の工程で会社名を保存するためのデータ項目です。保存した会社名を「メッセージ送信中間イベント(メール)」でメール本文に使用します。
請求予定日時日時「プロセス開始」の工程で請求予定日時を保存するためのデータ項目です。
請求額数値「レコード取得」の工程で請求額を保存するためのデータ項目です。保存した請求額を「メッセージ送信中間イベント(メール)」でメール本文に使用します。
連絡先文字(単一行)「レコード取得」の工程で連絡先(メールアドレス)を保存するためのデータ項目です。保存したメールアドレスを「メッセージ送信中間イベント(メール)」で宛先に使用します。
データ項目の設定

まず、「プロセス開始」工程 (「開始: kintone: レコード 日時フィールド」参照) で、請求予定日時を過ぎたレコードについてプロセスを開始します。

項目名必須説明
C1: API トークンを設定した認証設定*kintone への接続に使用する 認証設定を指定します。設定の仕方は「kintone と Questetra の連携設定」を参照してください。
C2:ドメイン*kintone のドメインを指定します。
C4:アプリ ID*kintone のアプリ ID を指定します。 
C5: チェック対象とする日時フィールドのフィールドコード*kintone アプリにポーリングを行うときにチェックする日時フィールドのフィールドコードを指定します。今回は「請求予定日時」を指定します。
C6: 検索クエリ検索クエリを指定できます。今回はプロセス URL が空のレコードのみ対象としたいので、「プロセス_URL = ””」 と入力します。検索クエリで使用可能な演算子と関数については、kintone のリファレンスを参照してください。
C7: レコード ID を保存するデータ項目*プロセスを開始したレコードの ID を保存する文字型データ項目を指定します。今回は「レコード ID」を指定します。
C8: 日時データを保存するデータ項目プロセスを開始した日時フィールドの値を保存する日時型データ項目を指定します。今回は「請求予定日時」を指定します。
「プロセス開始」工程の設定項目

次の「レコード取得」工程 (「kintone: レコード取得」参照) で、kintone のレコードを取得します。

項目名必須説明
C1: API トークンを設定した認証設定*kintone への接続に使用する 認証設定を指定します。設定の仕方は「kintone と Questetra の連携設定」を参照してください。
C2:ドメイン*kintone のドメインを指定します。
C4:アプリ ID*kintone のアプリ ID を指定します。 
C5: レコード ID*データを取得する kintone レコードの ID を文字型データ項目で指定します。今回は「レコード ID」を指定します。
C6F: フィールドコード_1取得したいデータの kintone アプリのフィールドコードを指定します。今回は請求額が保存されているフィールドのフィールドコード「請求額」を入力します。
C6V: 値_1 を保存するデータ項目C6F: フィールドコード_1 で指定したフィールドのデータを保存するデータ項目を指定します。今回は「請求額」を指定します。
C7F: フィールドコード_2取得したいデータの kintone アプリのフィールドコードを指定します。今回は連絡先が保存されているフィールドのフィールドコード「連絡先」を入力します。
C7V: 値_2 を保存するデータ項目C7F: フィールドコード_2 で指定したフィールドのデータを保存するデータ項目を指定します。今回は「連絡先」を指定します。
C8F: フィールドコード_3取得したいデータの kintone アプリのフィールドコードを指定します。今回は会社名が保存されているフィールドのフィールドコード「会社名」を入力します。
C8V: 値_3 を保存するデータ項目C8F: フィールドコード_2 で指定したフィールドのデータを保存するデータ項目を指定します。今回は「会社名」を指定します。
「kintone: レコード取得」の設定項目

次に、「メール送信」工程 (「メッセージ送信中間イベント(メール)」参照) で、請求先にメールを送信します。

項目名必須説明
送信元メールの送信元を指定します。今回は「参照を挿入する」から「プロセス開始ユーザ」を選択し、参照を埋め込みます。こうすることで、送信メールの From 欄に「ユーザ名 <メールアドレス>」の形式で送信元が表示されます。
To: 連絡先*メールの送信先を指定します。今回は「参照を挿入する」からデータ項目「連絡先」を選択し、参照を埋め込みます
メールの件名: 件名*メールの件名を指定します。今回は「請求のご案内」と入力します。 
本文: メールの本文を指定します。今回は「#{会社名の EL 式}」様。ご請求額をお知らせ致します。ご請求額:#{請求額の EL 式}円」と入力します。EL 式の書式についてはこちらを参照してください。送信元や To と同様に、「参照を挿入する」から埋め込むことも可能です。
「メッセージ送信中間イベント(メール)」の設定項目

これで、先方へ請求するメールを送信できます。

「メッセージ送信中間イベント(メール)」工程が完了したら、次の「レコード更新」工程 (「kintone: レコード更新」参照) に進みます。kintone のレコードに Questetra のプロセス参照 URL を保存します。こうすることで、請求額連絡済みのレコードが kintone アプリからも分かるようになります。

項目名必須説明
C1: API トークンを設定した認証設定*kintone への接続に使用する認証設定を指定します。設定の仕方は「kintone と Questetra の連携設定」を参照してください。
C2:ドメイン*kintone のドメインを指定します。
C4:アプリ ID*kintone アプリの ID を指定します。
C5: レコード ID*更新するレコードの ID を指定します。今回は「レコード ID」を指定します。
C6F: フィールドコード_1データを更新する kintone アプリのフィールドコードを指定します。今回はプロセス URL を保存するフィールドのフィールドコード「プロセス_URL」を入力します。
C6V: 新しい値_1C6F: フィールドコード_1 で指定したフィールドに保存するデータの値を指定します。今回はプロセス参照 URL を保存したいので、「${var[applicationRoot]}OR/ProcessInstance/listView?processInstanceId=#{processInstanceId}」と入力します。
「kintone: レコード更新」の設定項目

レコードの更新が完了すれば、全工程終了です。

今回、「プロセス開始」工程で検索クエリを用いてプロセス URL が空の kintone レコードのみをプロセス開始の対象とし、「レコード更新」工程で処理済みの kintone レコードにプロセス URL を保存するようにしました。

この方法には以下のメリットがあります。

  • 処理済みの kintone レコードの日時データが後から変更された場合でも、プロセスが重複して開始されることがない(重複処理の防止)。
  • 処理済み/未処理の状況が kintone からも分かり、処理済みのレコードについては保存されたプロセス URL から処理内容を参照できる。

今回は以上です。

%d人のブロガーが「いいね」をつけました。