kintone の「プロセス管理」で困ったときに(その1)
kintone からクラウド型 BPM ワークフロー Questetra の業務(プロセス)を開始する方法

システム連携ネタでよくブログを書いている日下です。
※ちなみにこれまでのネタはこちら

サイボウズ社の「kintone」には「プロセス管理」という仕組みがありますが、以下の課題がある、という話を何度か聞いたことがあります。

  • そもそも設定が難しい
  • 複雑な業務の流れを組むことができない
  • がんばって凝った設定をしたら後のメンテナンスがたいへん

もともとが Web データベースですので、サービスの構造としてワークフローを組む部分がメインとはならないのは致し方ないところかと思います。

一方、クラウド型ワークフローの Questetra には

  • ドラッグ&ドロップで目に見える形で業務の流れが設定できる
  • 複雑な業務の流れ(並行分岐や合流、複合条件での分岐など)を組むこともできる
  • 業務の流れが目に見える形なのでメンテナンスしやすい

という特長があります。kintone と Questetra を組み合わせることで、上記の「プロセス管理」の課題をクリアすることができますので、kintone と Questetra を併用されているケースがあります。

ということで、今回は kintone から Questetra の業務(プロセス)を開始する方法について紹介します。

目次
1: 想定する対象業務
2: kintone と Questetra との連携の仕組み
3: Questetra 側の設定(受信の準備)
4: kintone 側の設定(送信の設定)
5: まとめ

1: 想定する対象業務

今回は契約更新の業務をサンプルとして説明します。
kintone の画面は以下のような感じとし、Javascript によるカスタマイズで「Questetra にデータ送付」ボタンを置いてあります。


契約期限が近いものについて、ボタンを押下することで契約更新の業務を開始するようにします。

2: kintone と Questetra との連携の仕組み


それぞれ以下の設定を行います。

  • Questetra 側:http リクエストを受けて業務(プロセス)を開始するよう設定
  • kintone 側:Javascript によるカスタマイズで、表示レコードの情報を http リクエストで Questetra に送るボタンを追加

3: Questetra 側の設定(受信の準備)

以下の「メッセージ開始イベント(HTTP)」を置くことで、http リクエストを受けて業務(プロセス)が開始できるようになります。

※「メッセージ開始イベント(HTTP)」の詳細については以下をご覧ください。
M221: 特定URIにHTTPリクエストがあった時に自動的に開始されるように設定する

今回は以下のような業務の流れとしました。

Questetra 側のデータ項目設定は以下としました(kintone との連携に関するもののみ記載)。

データ定義番号 データ項目名 データ型
9 レコード番号 数値型
0 顧客コード 文字型
1 顧客名 文字型
2 顧客担当者名 文字型
3 顧客メールアドレス 文字型
4 現在の契約期限 日付型

また、「メッセージ開始イベント(HTTP)」のデータ編集許可設定は以下としました。

プロセスモデルをリリースすれば、kintone との接続部分のパラメータ等が確定されます。リリース済のバージョンの「メッセージ開始イベント(HTTP)」のプロパティの「URL・パラメータ詳細」を開くと、以下のような画面が表示され、確認できます。

※データ項目の設定で「フィールド名」を指定して、受信パラメータ名を指定することもできるのですが、設定をなるべく少なくするため今回は使っていません。

今回のサンプルでは本題ではないため Questetra で組む業務について、あまり複雑な業務の流れにはしていませんが、例えば以下のような制作業務を組むこともできます。

4: kintone 側の設定(送信の設定)

Javascript でのカスタマイズの手順については、以下が参考になりました。
 cybozu developer network「第1回 kintone javascript APIのイジりかた」
 cybozu developer network「第3回 レコード詳細にもボタンを設置しよう!」

kintone 側のフィールドの設定は以下としました。

フィールド名 フィールド型 フィールドコード
顧客コード 文字列 customerCode
顧客名 文字列 customerName
顧客担当者名 文字列 customerUserName
顧客メールアドレス 文字列 customerUserEmail
契約期限 日付 expireDate

kintone に設定した Javascript のコードは以下となります。さきほど Questetra 側の設定で確認した「メッセージ開始イベント(HTTP)」の「URL・パラメータ詳細」にあわせて設定しています。
※●●●とした URL、processModelInfoId、key は Questetra の環境ごとに変わりますので、それにあわせて変更してください。

(function () {
  "use strict";

  kintone.events.on('app.record.detail.show', function (event) {
    var myIndexButton = document.createElement('button');
    myIndexButton.id = 'my_index_button';
    myIndexButton.innerHTML = 'Questetra にデータ送付';
    myIndexButton.onclick = function () {

      var customerCode = '';
      var customerName = '';
      var customerUserName = '';
      var customerUserEmail = '';
      var expireDate = '';

      var recordId = kintone.app.record.getId();
      var rec = kintone.app.record.get();
      if (rec) {
        customerCode = rec.record.customerCode.value;
        customerName = rec.record.customerName.value;
        customerUserName = rec.record.customerUserName.value;
        customerUserEmail = rec.record.customerUserEmail.value;
        expireDate = rec.record.expireDate.value;
      }

      var url = "https://●●●.questetra.net/System/Event/MessageStart/start";
      var headers = {'Content-Type' : 'application/x-www-form-urlencoded'};
      var data = "processModelInfoId=●●●"
        + "&nodeNumber=0"
        + "&key=●●●"
        + "&data[9].usdecimal=" + recordId
        + "&data[0].input=" + customerCode
        + "&data[1].input=" + encodeURIComponent(customerName)
        + "&data[2].input=" + encodeURIComponent(customerUserName)
        + "&data[3].input=" + encodeURIComponent(customerUserEmail)
        + "&data[4].input=" + expireDate;

      kintone.proxy(url, 'POST', headers, data, function (body, status, headers) {
        if (status === 200) {
          alert('送信完了');
        } else {
          alert('送信失敗(システム管理者に相談してください)\n' + status + '\n' + body);
        }
      });

    }
    kintone.app.record.getHeaderMenuSpaceElement().appendChild(myIndexButton);
  });
})();
※kintone と Questetra とのデータの受け渡しについては、データの型によってはフォーマットをあわせる必要あります。今回使った文字・数値・日付については特に変換せずにそのままで連携できました。

5: まとめ

以上の設定で、kintone のレコード詳細の画面でボタンを押下すると Questetra 側で業務(プロセス)が開始されます。
今回の想定業務であれば、結果を Questetra から kintone に戻す必要がありますが、その部分についてはその2で説明します。

もし、ご質問等がありましたら、お問い合わせフォームからご連絡ください。

無料からスタートできる Questetra BPM Suite

こちらの Web フォームからお申込みいただきますと Questetra の無料お試しアカウントが作成できます。上記のものを含め、全ての機能が使えますので、ぜひお試しください。

About The Author

「kintone の「プロセス管理」で困ったときに(その1)」への4件のフィードバック

  1. ピンバック: クラウド BPM ワークフローの他システム連携事例集(2019年6月版) - Questetra

  2. ピンバック: クラウド BPM ワークフローの他システム連携事例集(2019年6月版) - Questetra

  3. 王しん

    kintoneとQuestetraの連携ご参考させて頂きます。ありがとうございます。

    現在、kinntoneからQuestetraへ添付ファイル、テーブル情報を連携しようとしています。
    知識不足でうまくいきませんでした。

    添付ファイル、テーブル情報の連携し方を
    ご教授頂ければ幸いです。
    よろしくお願いいたします。

    1. Tsuyoshi Kusaka

      コメントいただき、ありがとうございます。
      ご相談いただいた件について、詳細をお伺いしたいため、別途メールで連絡させていただきました。
      よろしくお願い致します。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

上部へスクロール
%d人のブロガーが「いいね」をつけました。