経路探索サービスと経費精算フローの連携方法
経路探索サービス「ジョルダン」と Questetra の経費精算フローとの連携例
システム連携ネタでよくブログを書いている日下です。
※ちなみにこれまでのネタはこちら
私は普段、電車等での移動の経路を調べるのに「ジョルダン」社のサービスを使っています。
その経路の情報を、自社の経費精算(立替金精算)フローに送ることで入力の手間を省く対応を追加したので紹介します。
目次
1: 操作について
2: プロセスモデルの設定について
3: まとめ
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 の Trial モード(60日間無料)登録はこちら
こちらの Web フォームからお申込みいただきますと Questetra の無料お試しアカウントが作成できます。上記のものを含め、全ての機能が使えますので、ぜひお試しください。