kintone の「プロセス管理」で困ったときに(その1)

kintone からクラウド型 BPM ワークフロー Questetra の業務(プロセス)を開始する方法

 

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

 

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

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

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

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

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

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


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


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



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

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


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

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

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

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

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

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

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

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

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


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 とのデータの受け渡しについては、データの型によってはフォーマットをあわせる必要あります。今回使った文字・数値・日付については特に変換せずにそのままで連携できました。


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

 

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


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

FreeQues

 

Kusaka Tsuyoshi の紹介

営業をやってますが、もともとエンジニアなので、プログラミングもやります。
Kusaka Tsuyoshi の投稿をすべて表示

あわせて読みたい
50.Questetra Tips の前の記事 コンビニ印刷サービスとクラウド BPM との連携事例
50.Questetra Tips の次の記事 kintone の「プロセス管理」で困ったときに(その2)
Kusaka Tsuyoshi の他の記事 ワークフローの途中で帳票を自動印刷する方法

アーカイブ

 RSS