第483話:kintone 上のマスター情報と日次同期する

2016年5月16日
『顧客リスト』は、代表的な「データベース」だ。(紙管理にせよ、コンピュータ管理にせよ)

そもそも「データベース」に格納されるデータは、
  • (A) マスター情報 (マスター系データ)
    • 商品マスター
    • 顧客マスター
    • 価格表、など
  • (B) ログ情報 (トランザクション系データ)
    • 支払履歴
    • 受注記録
    • アクセスログ、など
に大別されるが、日常業務において「(A)マスター系データ」に属するデータを参照したくなる機会は多い。


以下の業務プロセスは、クラウド型データベース『kintone』で管理されている顧客マスター情報を、ワークフロー環境の『顧客マスター』として日次同期させる仕組みだ。(バッチ処理と言っても良い)。全工程が自動化されているだけでなく、任意の時刻に手動で同期させることも可能な点が秀逸といえる。

つまるところ、「見積提出プロセス」「受注報告プロセス」「請求プロセス」など、様々な業務において、最新の『顧客マスター』を参照できるようになる。いわゆる「ユラギ」や「ナヨセ」と決別できるかも知れない。(更には kintone データの自動バックアップという意味もある)

[顧客マスタ同期プロセス]

クラウド型データベース『kintone』には API がある。
  • https://${YOUR-DOMAIN}.cybozu.com/k/v1/record.json?app=1&id=1
  • https://${YOUR-DOMAIN}.cybozu.com/k/v1/records.json?app=1
と言った形式でサーバ間通信させれば、様々な情報を同期させることが可能となる。

注) kintone API の利用には「カスタムHTTPヘッダ機能」(Questetra BPM Suite v11.0: 2016-05-23)が必要。

<API 通信のイメージ図>

たとえば「Excel 関数」を使える人なら、「マスター情報テーブルの設定方法」から、その「API通信の仕組み」まで、半日もあれば習得できるだろう。 (もっとも、JSONというテキストフォーマットで送受信される点に、ヤヤコシイと感じる人がいるかもしれない)

※ ちなみに「アプリIDって、ドコに書いてるの?」と思う人が多いのだが、リストを表示するURL( https://example.cybozu.com/k/3/ )にある数字を(この例では「3」)を参照すればよい。


▼マスター情報テーブル作成(kintone)の大まかな流れ
  1. 情報テーブルの名前を付ける(Customers)
  2. 情報テーブルの説明を書く
  3. データ項目を定義する
  4. (マスター管理で必要となる項目のフォーマットをドラッグする)
  5. (自動処理で必要となる[フィールドコード]をそれぞれ設定する)
  6. (項目の並びをチェックする)
  7. 全項目を一覧ビューを設定する
  8. データ同期するための通信設定をする(API Token)
  9. (APIトークンをメモする)
  10. マスター情報テーブルを運用開始する
  11. マスターに顧客データを登録する
  12. (顧客データ一覧を参照する)

<キャプチャ:1-12>
(1)


▼自動リクエスト設定(Questetra)の大まかな流れ
  1. メッセージ送信中間イベントを配置する
  2. kintone API への[Access URL]を記入する(Method: GET)
  3. カスタムヘッダ設定に『X-Cybozu-API-Token』および「APIトークン」を記入する
  4. レスポンスJSON を格納するデータ項目を指定する

▼スクリプト工程『List Generate』の設定例 (サーバサイド JavaScript)
//// == ワークフローデータの参照 / Retrieving ==
var myJson = data.get("1") + ""; // JSON text
 
//// == 演算 / Calculating ==
var customersData = JSON.parse( myJson );
var numOfRecords = customersData.totalCount - 0;

var value_id_list = "";
var display_label_list = "";
for (i = 0; i < numOfRecords; i++){
  value_id_list += customersData.records[i].customerCode.value + "\n";
  display_label_list += customersData.records[i].customerName.value + "\n";
}
 
//// == ワークフローデータへの代入 / Updating ==
retVal.put("4", value_id_list);
retVal.put("5", display_label_list);

▼ JSON サンプル(見やすさのため改行およびインデントを追加)
// query や fields を省略した場合、閲覧権限のある全レコード全フィールドの値が返される 

{"records":[
  {"customerName":{"type":"SINGLE_LINE_TEXT","value":"国立大学法人京都大学"},
   "Updated_datetime":{"type":"UPDATED_TIME","value":"2016-05-11T01:15:00Z"},
   "Created_datetime":{"type":"CREATED_TIME","value":"2016-05-11T01:15:00Z"},
   "Created_by":{"type":"CREATOR","value":{"code":"example@gmail.com","name":"example@gmail.com"}},
   "Record_number":{"type":"RECORD_NUMBER","value":"3"},
   "$revision":{"type":"__REVISION__","value":"1"},
   "tel":{"type":"LINK","value":"075-753-7531"},
   "personInCharge":{"type":"SINGLE_LINE_TEXT","value":""},
   "url":{"type":"LINK","value":"http://www.kyoto-u.ac.jp/"},
   "email":{"type":"LINK","value":""},
   "decileRank":{"type":"DROP_DOWN","value":"E"},
   "customerCode":{"type":"SINGLE_LINE_TEXT","value":"3130005005532#www.kyoto-u.ac.jp"},
   "$id":{"type":"__ID__","value":"3"},
   "note":{"type":"MULTI_LINE_TEXT","value":""},
   "Updated_by":{"type":"MODIFIER","value":{"code":"example@gmail.com","name":"example@gmail.com"}}
  },
  {"customerName":{"type":"SINGLE_LINE_TEXT","value":"Google Inc."},
   "Updated_datetime":{"type":"UPDATED_TIME","value":"2016-05-11T01:16:00Z"},
   "Created_datetime":{"type":"CREATED_TIME","value":"2016-05-11T01:13:00Z"},
   "Created_by":{"type":"CREATOR","value":{"code":"example@gmail.com","name":"example@gmail.com"}},
   "Record_number":{"type":"RECORD_NUMBER","value":"2"},
   "$revision":{"type":"__REVISION__","value":"2"},"tel":{"type":"LINK","value":""},
   "personInCharge":{"type":"SINGLE_LINE_TEXT","value":"Sergey Brin"},
   "url":{"type":"LINK","value":"https://www.google.com/"},
   "email":{"type":"LINK","value":""},
   "decileRank":{"type":"DROP_DOWN","value":"J"},
   "customerCode":{"type":"SINGLE_LINE_TEXT","value":"9999999999999#www.google.com"},
   "$id":{"type":"__ID__","value":"2"},
   "note":{"type":"MULTI_LINE_TEXT","value":""},
   "Updated_by":{"type":"MODIFIER","value":{"code":"example@gmail.com","name":"example@gmail.com"}}
  },
  {"customerName":{"type":"SINGLE_LINE_TEXT",
   "value":"Questetra, Inc."},
   "Updated_datetime":{"type":"UPDATED_TIME","value":"2016-05-11T01:11:00Z"},
   "Created_datetime":{"type":"CREATED_TIME","value":"2016-05-11T01:11:00Z"},
   "Created_by":{"type":"CREATOR","value":{"code":"example@gmail.com","name":"example@gmail.com"}},
   "Record_number":{"type":"RECORD_NUMBER","value":"1"},
   "$revision":{"type":"__REVISION__","value":"1"},
   "tel":{"type":"LINK","value":"075-205-5007"},
   "personInCharge":{"type":"SINGLE_LINE_TEXT","value":"IMAMURA Genichi"},
   "url":{"type":"LINK","value":"https://www.questetra.com/"},
   "email":{"type":"LINK","value":"support@questetra.com"},
   "decileRank":{"type":"DROP_DOWN","value":"A"},
   "customerCode":{"type":"SINGLE_LINE_TEXT","value":"6130001031686#www.questetra.com"},
   "$id":{"type":"__ID__","value":"1"},
   "note":{"type":"MULTI_LINE_TEXT","value":"Kyoto"},
   "Updated_by":{"type":"MODIFIER","value":{"code":"example@gmail.com","name":"example@gmail.com"}}
  }],
 "totalCount":"3"}


[顧客マスタ同期プロセス:「1.同期状況確認」画面]

<データ項目一覧画面>


[雛形ダウンロード (無料)]
<類似プロセス>
≪関連記事≫

[英文記事 (English Entry) ]

0 件のコメント :

コメントを投稿