クラウド型 ワークフロー

Questetra でマスタデータを管理するいくつかの方法

 

システム連携ネタでよくブログを書いている日下です。
※過去の記事はこちら

今回は、システム連携も関係しますが、前回と同様に Questetra の活用方法に関するネタです。

 

Questetra が関わるマスタデータの管理、というのはよくあるテーマの1つです。

Questetra で、マスタデータの登録/変更/削除の際の承認フローの実現+マスタデータの変更まで対応、ということもありますし、Questetra ではマスタデータの利用だけする、ということもあります。

そのマスタデータの保持方法としてはいくつかのパターンがあります。どういう方法があるのか、それぞれのメリット・デメリットを整理して、今後検討される際の材料にしてもらえればと思っています。

 

マスタデータのオリジナルを外部(Salesforce/kintone/Google Spreadsheet など)に保持するのかどうか、外部に保持する場合に内部にもコピーを保持するのかどうかによって、パターンが異なります。
 

  • パターン1:マスタデータのオリジナルを Questetra 外部に保持、参照は都度行う場合
  • パターン2:マスタデータのオリジナルを Questetra 外部に保持、定期的に Questetra 内部に同期して参照する場合
  • パターン3:マスタデータのオリジナルを Questetra 内部に保持する場合
 
パターン メリット デメリット
1 ・選択肢の変更がリアルタイムに反映される
・マスタに関する複数のデータ項目を保持しやすい
・マスタデータを一覧しやすい(保持する先にもよる)
・選択肢を xml 形式で返すよう作り込みが必要(Questetra 外部で作り込み要、ボリューム少し大き目)
2 ・マスタに関する複数のデータ項目を保持しやすい
・マスタデータを一覧しやすい(保持する先にもよる)
・選択肢の変更がリアルタイムに反映されない
・定期的に同期されるよう作り込み要(API がある場合は Questetra アプリ内のスクリプトで対応できるのでボリューム小さ目)
3 ・選択肢の変更がリアルタイムに反映される
・Questetra だけで実現可能
・マスタに関する複数のデータ項目を保持するとなると工夫が必要
・マスタデータを一覧しづらい

 

※選択肢 xml の書式については、以下を参照ください。
 M319 プロセスモデリング環境 複数の業務プロセス定義から参照される選択肢XMLを登録する
※Questetra で保持するマスタデータは選択肢の id と表示データという2項目のみとなるため、マスタに関する複数のデータ項目を管理したい場合には工夫が必要となります。その工夫については以下を参照ください。
 ブログ「顧客マスタを選択肢 XML で実現してみる(その1)」
 ブログ「顧客マスタを選択肢 XML で実現してみる(その2)」
※プロセス(案件)によって選択肢の内容を変えたいというケースがありますが、今回とは少し異なるテーマとなります。以下を参考にしてください。
 M208 データ項目 下流工程で利用する選択肢を、上流工程で列挙できるように設定する
※複数の選択データ項目による親子連動というケースがありますが、今回とは少し異なるテーマとなります。以下を参考にしてください。
 M410 入力画面 選択肢 “商品分類” を選べば “商品名” の一覧表示が絞り込まれるように設定する

 


外部データの参照は、http アクセスして選択肢 xml を返してもらう形となります。
例えば、外部データを Google Spreadsheet で保持して、 Google Apps Script(GAS)で Web アプリを準備し、選択肢 xml を生成して返す、といった実現方法があります。
 

この方法によるサンプル Google Spreadsheet を以下に準備して公開しました。
 Google Spreadsheet サンプル:世界の国のマスタデータ管理
またこのサンプル Google Spreadsheet に選択型データから HTTP アクセスする場合には以下の図のように下記 URL を指定してください。

https://script.google.com/macros/s/AKfycbwyCl0DTV_d348j7mKXZKYFAPqUUjq4QcL0V5G77Naw12rcEte2/exec

 

また、このような Google Spreadsheet を作成するための GAS のサンプルコードは以下となります。

var SHEET_ID = "xxxxx"; //input Google Sheet id
var SHEET_NAME = "Sheet1"; //input Sheet name

function doGet(e) {
  return  receive_(e);
}

function doPost(e) {
  return  receive_(e);
}

function receive_(e) {

  var search_key = e.parameter['query'];
  if (search_key == undefined) {
    search_key = "";
  }

  var out = ContentService.createTextOutput(buildXml(search_key));
  Logger.log(out.getContent());

  return out;
}

function buildXml(search_key) {
  var sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName(SHEET_NAME)

  var startRow = 2;
  var numRows = sheet.getLastRow() - 1;
    
  var dataRange = sheet.getRange(startRow, 1, numRows, 2);
  var data = dataRange.getValues();
  var out_string = '';

  out_string += '\n';
  for ( var i = 0; i < data.length; ++i) {
    var row = data[i];
    
    var select_value = row[0];
    var select_display = row[1];

    if ((search_key == "") || (select_display.indexOf(search_key) >= 0)) {
      out_string += '\n';
    }
  }
  out_string += '';
  Logger.log(out_string);

  return out_string;
}

GAS で Web アプリを準備する方法は以下の記事を参考にしてください。
※古い記事になりますので、メニューが日本語化される前のものになります。ご留意ください。
 ブログ「電話をかけてワークフローを開始する方法」

 


 
Questetra から外部のサービスの API をたたいて、取得データ(たいていは JSON 形式)を「スクリプトタスク」で加工して取り込む形となります。また、そういった処理をアドオン化したものも準備しています。

外部データを Salesforce で保持する場合には以下の実現方法の記事を参考にしてください。
※数年前の記事ですので、現在と仕様が変わっている部分があるかもしれません。ご留意ください。
 ブログ「Salesforce の顧客データを選択肢として使用する」
Google Spreadsheet の場合には以下のサンプルを参考にしてください。
 ワークフローサンプル「第502話:ユラギを無くすには「マスター参照」でしょ!」
kintone の場合には以下のサンプルを参考にしてください。
 ワークフローサンプル「第503話:ユラギを無くすには「マスター参照」でしょ!(kintone編)」
また、社内システムとの連携を考える場合には以下を参考にしてください。
 社内マスタを「選択肢 XML」に反映させる方法(前編)
 社内マスタを「選択肢 XML」に反映させる方法(後編)

 


選択肢 xml ファイルを自作してアップロードすることも可能ですが、いちいちファイルを作るのは手間ですし、メンテナンス記録も残りません。アプリ化しておくととても楽です。

以下にマスタ更新時のトラブル回避まで考慮したアプリの実現方法の記事があります。参考にしてください。
 ブログ「失敗しない!選択肢 XML 更新作業とは?」
 ブログ「失敗しない!選択肢 XML 更新作業とは?(サービスタスク Addon編)」

※選択肢 xml ファイルはシステム共通で保持するパターンと、あるアプリ専用で保持するパターンの2通りがあります。前者の場合には「サービスタスク(選択肢マスタ更新)」が使えますが、後者の場合はそれが使えませんのでアプリ化できません。ご留意ください。

 

様々な方法があり、それぞれに向き不向きがありますので、シーンに応じて使い分けてください。
もし、ご質問等がありましたら、お問い合わせフォームからご連絡ください。

 

Kusaka Tsuyoshi の紹介

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

あわせて読みたい
50.Questetra Tips の前の記事 ロボット君がランダムに翻訳者を指名してくれる方法(2)
50.Questetra Tips の次の記事 ロボット君がランダムに翻訳者を指名してくれる方法(3)
Kusaka Tsuyoshi の他の記事 backlog とクラウド BPM は連携できるのか?

アーカイブ

 RSS