経路探索サービスと経費精算フローの連携方法
経路探索サービス「ジョルダン」と Questetra の経費精算フローとの連携例

 

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

 

私は普段、電車等での移動の経路を調べるのに「ジョルダン」社のサービスを使っています。
その経路の情報を、自社の経費精算(立替金精算)フローに送ることで入力の手間を省く対応を追加したので紹介します。

 

目次
1: 操作について
2: プロセスモデルの設定について
3: まとめ

 

1: 操作について

操作の流れは以下のようになります。

  • ジョルダンのスマホアプリで経路を検索
  • 経路が決まったら、その内容をメールで送る
    その際に宛先は Questetra のプロセスモデルで決められたアドレス、fromアドレスは Questetra のユーザアカウントにあわせる
  • ほぼデータが埋まった状態でタスクが自分のマイタスクにやって来るので、必要に応じて修正を加えて処理を進める

「ジョルダン」の画面の以下のボタンからメール送付。

 

2: プロセスモデルの設定について

プロセスモデルは以下のようになっています(関連部分のみ抜粋)。

入力画面は以下のような感じです。
※この図には件名が入ってませんが、件名にはどの駅~どの駅かと交通機関名と日付が入っています。

データ項目の詳細は以下のサンプルと同じです。
ワークフローサンプル 第464話:立替金精算依頼を回す(基本業務パック)

メール解析のスクリプトは以下のようにしました。
※件名の交通機関名は自動で取るようにはしておらず、後で自分で修正する想定で仮の値を入れています。

※2018-08-06 追記
スクリプトについて、プロセスデータの参照・更新の記述方法が変更になっていますので、見直しました。
// 申請者の特定
var quserEmail = engine.findDataByNumber("16"); // [Mail-From]

var quser = quserDao.findByEmail(quserEmail);
if ( quser != null ){
  var qgrouplist = qgroupDao.findByQuserAndPosition(quser, false );
  if ( qgrouplist.size() != 0 ){
    engine.setDataByNumber("1", qgrouplist.get(0) ); // ->[立替人所属組織]
  } else {
    engine.setDataByNumber("1", qgroupDao.findById(1) ); // ->[立替人所属組織]
  }
  engine.setDataByNumber("2", quser ); // ->[立替人]
}

// メール解析
// 1行目は経路 ex.烏丸御池~大阪
// 2行目は日付 ex.11/11(金) 13:58 - 14:43
// 3行目は時間や金額等 ex.45分 乗換1回 770円
var mailBody = engine.findDataByNumber("7") + ""; // [支払備考]
var array = mailBody.split("\n");

var route = "";
if ( array.length >= 1 ){
  route = array[0]; // [経路]
}

var paydate = "";
if ( array.length >= 2 ){
  paydate = array[1]; // [立て替えた日]

  //年の記載がないので本日日付から取得(年またぎは考慮せず)
  var today = engine.findDataByNumber("3");
  var formatter = new java.text.SimpleDateFormat("yyyy");
  engine.setDataByNumber("5", java.sql.Date.valueOf(
    formatter.format(today) + "-" +
    paydate.substr(0, 2) + "-" +
    paydate.substr(3, 2) ) ); // ->[立て替えた日]
}

var money = "";
var moneyInt = NaN;
if ( array.length >= 3 ){
  money = array[2]; // [立替金額]
  var pos = money.indexOf("回");
  if ( pos >= 0 ){
    moneyInt = parseInt(money.substring(pos + 1).split(',').join('').split('円').join('').trim(), 10 )
  }
  if ( ! isNaN(moneyInt) ){
    engine.setDataByNumber("4", java.math.BigDecimal(moneyInt) ); // ->[立替金額]
  }
}

processInstance.setProcessInstanceTitle(route + "(●地下鉄、JR●) " + paydate.substr(0, 2) + paydate.substr(3, 2)); // ->[件名]

 

3: まとめ

1回1回はちょっとした作業ですが、回数が多いとそこそこ時間を使っていることになります。それをうまく効率化でき、いい感じで使えています。
このような形で経費精算を楽にしたい、という方はぜひお問合せフォームからご相談ください。

 

Questetra の無料版(スタータープラン)登録はこちら

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

 

コメントを残す

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