営業成果 月間集計 20211026
リード案件の前月進捗が月初にメールで自動通知されるワークフローです。 商談化率、受注件数、担当者別売上金額等がリード管理プロセスから自動集計されます。集計結果は、毎月1日に指定のメールアドレスに送信されます。宛先を営業部員にすることで、前月の目標達成差異を確認できます。
作業担当者 (スイムレーンの数:1)
- 営業部長
仕事の流れ (ワークフロー図の複雑度:11)
- 2 1.集計開始(手動)
- 営業部長が、前月の営業活動集計を開始する。
- 7 前月リード集計 取得
- ワークフロー基盤が、リード管理プロセスから前月のリードデータを収集する。
- 8 前月受注集計 取得
- ワークフロー基盤が、リード管理プロセスから前月受注データを収集する。
- 5 前月案件化集計 取得
- ワークフロー基盤が、リード管理プロセスから前月案件化データを収集する。
- 12 営業活動結果 集計
- ワークフロー基盤が、受注集計・案件化集計を行う。
- 14 案件化率 算出
- ワークフロー基盤が、案件化率(案件化件数/リード件数)を算出する。
ワークフロー図 (クリックして開く)

- BPMN Icons
- 開始イベント
- 終了イベント
- 結合ゲートウェイ
- メッセージ送信中間イベント(メール)
- タイマー開始イベント
- ヒューマンタスク
- データ更新
- スクリプトタスク
- Questetra BPMS: 案件, 保存済フィルタでTSV一括抽出
受け渡しされるビジネスプロセス変数 (データ項目の数:16)
- 受注:抽出対象件数 q_filtered_all_count_order
7
- 受注件数(フィルタ全件)が格納されます。
- 受注:リスト抽出件数 q_filtered_count_order
8
- 受注件数(フィルタ500件)が格納されます。
- 受注:抽出データ q_order_data
6
- 受注データ(フィルタ500件)が格納されます。
- 受注:受注額総計 q_total_amount_orders
11
- 受注額の総計が格納されます。(受注データより算出)
- 受注:担当者別集計(html) q_Individual_totalization_orders
12
- 担当者ごとの受注件数・受注額が整形(HTML)され、格納されます。
- 案件化:抽出対象件数 q_filtered_all_count_trial
1
- 案件化件数(フィルタ全件)が格納されます。
- 案件化:リスト抽出件数 q_filtered_count_trial
2
- 案件化件数(フィルタ500件)が格納されます。
- 案件化:抽出データ q_trial_data
0
- 案件化データ(フィルタ500件)が格納されます。
- 案件化:見込額総計 q_total_amount_trials
13
- 案件見込み額の総計が格納されます。(案件データより算出)
- 案件化率(%) q_to_trial_rate
15
- 案件化率(案件化件数/リード件数)が格納されます。
- 案件化:担当者別集計(html) q_Individual_totalization_trials
14
- 担当者ごとの案件化件数・見込み額が整形(HTML)され、格納されます。
- リード:抽出対象件数 q_filtered_all_count_lead
4
- リード件数(フィルタ全件)が格納されます。
- リード:リスト抽出件数 q_filtered_count_lead
5
- リード件数(フィルタ500件)が格納されます。
- リード:抽出データ q_lead_data
3
- リードデータ(フィルタ500件)が格納されます。
- 集計対象組織 q_target_group
9
- 集計対象の組織が格納されます。
- processInstanceInitQgroupId
- 集計対象月 q_target_month
10
- 集計月(YYYY-MM)が格納されます。
- processInstanceStartDatetime.addMonths(-1)
フィールド名, Num
, 初期値
Download
- monthly-sales-action-report-process-20211026-ja.qar
- monthly-sales-action-report-process-20211026-ja.csv (データ項目定義インポート用)
This archive contains the BPMN icon, which is only available in the Professional edition.
Notes
- インポート時に組織構造に合わせて、処理担当者設定の関連付けを行います
- 「前月案件化集計 取得」「前月リード集計 取得」「前月受注集計 取得」自動工程では、ターゲットとなるワークフロー基盤に対して抽出リクエストが送信されます。
- ターゲットとなるワークフロー基盤は URL で設定します。(REST API 接続先)
- ターゲットとなるワークフロー基盤が同一基盤の場合、変数による設定が便利です。(システム変数)
- ${var[applicationRoot]}
- ターゲットとなるワークフロー基盤のフィルタの表示設定に従って「表示データ」だけがTSVに格納されます。
- ただし、フィルタの表示設定に関わらず、案件プロパティ(8項目)はTSV先頭列に格納されます。
- フォーマット例(リード全件データ)
- アプリ名, カテゴリ, プロセスID, 件名, 状態, 開始ユーザ, 開始日時, 終了日時,リード終了日,件名,リードステータス,営業担当者
- ただし、フィルタの表示設定に関わらず、案件プロパティ(8項目)はTSV先頭列に格納されます。

- スクリプト工程「営業活動結果 集計」では、「前月案件化集計 取得」「前月リード集計 取得」「前月受注集計 取得」自動工程で取得したデータを元に前月の営業成果が集計されます。
- リード:総件数
- 受注:総額、営業担当者毎の件数/受注総額
- 案件化:総額、営業担当者毎の件数/見込総額/案件化率
Arrangement Tips
「営業活動結果 集計」自動工程 Script (click to open)
const qgroup = qgroupDao.findByName("営業部"); //◆対象の組織名を指定してください。◆//
const qusers = quserDao.findByQgroup(qgroup);
const orderList = engine.findDataByVarName("q_order_data");
const trialList = engine.findDataByVarName("q_trial_data");
const leadList = engine.findDataByVarName("q_lead_data");
let rows;
let cols;
main();
function main(){
// 受注額総計
let totalAmountOrders = 0;
let rows = orderList.split("\n");
let orderResult = "";
let orderPersonsByQuser = new Array(qusers.size());
let orderAmountByQuser = new Array(qusers.size()).fill(0);
let orderCountByQuser = new Array(qusers.size()).fill(0);
for (var i=0; i < qusers.size();i++){
orderPersonsByQuser[i] = qusers.get(i).getName() + " <" + qusers.get(i).getEmail() + ">";
}
for (var i=0; i < rows.length; i++){
cols = rows[i].split("\t");
totalAmountOrders += Number(cols[14].replace(/,/g, ''));
for (var j=0; j < qusers.size();j++){
//engine.log(cols[12] + " " + orderPersonsByQuser[j] );
if (cols[12].indexOf(orderPersonsByQuser[j] ) !== -1 ){
orderAmountByQuser[j] += Number(cols[14].replace(/,/g, '')) + 0;
orderCountByQuser[j] += 1;
}
}
}
engine.log("totalAmountOrders: " + totalAmountOrders);
let text = "";
text += "<table cellpadding=3D\"2\" cellspacing=3D\"2\" bgcolor=\"#eeeeee\">";
for (var i=0; i < qusers.size();i++){
text += "<tr style=\"font-family:Meiryo\">";
text += "<td bgcolor=\"#ffffff\" align=\"left\" style=\"background-color:#ffffff; padding:2px; text-align:left\">" + orderPersonsByQuser[i]+ "</td>";
text += "<td bgcolor=\"#ffffff\" align=\"right\" style=\"background-color:#ffffff; padding:2px; text-align:right\">" + orderAmountByQuser[i] + "円(税抜)</td>";
text += "<td bgcolor=\"#ffffff\" align=\"right\" style=\"background-color:#ffffff; padding:2px; text-align:lright\">" + orderCountByQuser[i] + "件</td>";
text += "</tr>";
engine.log("orderPersonsByQuser[" + i + "]:" + orderPersonsByQuser[i]);
engine.log("orderAmountByQuser[" + i + "]:" + orderAmountByQuser[i]);
engine.log("orderCountByQuser[" + i + "]:" + orderCountByQuser[i]);
}
text += "</table>";
engine.setDataByVarName("q_total_amount_orders", new java.math.BigDecimal(totalAmountOrders));
engine.setDataByVarName("q_Individual_totalization_orders", text);
// 案件化総計
let totalAmountTrials = 0;
rows = trialList.split("\n");
let trialResult = "";
let trialPersonsByQuser = new Array(qusers.size());
let trialAmountByQuser = new Array(qusers.size()).fill(0);
let trialCountByQuser = new Array(qusers.size()).fill(0);
for (var i=0; i < qusers.size();i++){
trialPersonsByQuser[i] = qusers.get(i).getName() + " <" + qusers.get(i).getEmail() + ">";
}
for (var i=0; i < rows.length; i++){
cols = rows[i].split("\t");
totalAmountTrials += Number(cols[14].replace(/,/g, ''));
for (var j=0; j < qusers.size();j++){
//engine.log(cols[12] + " " + orderPersonsByQuser[j] );
if (cols[12].indexOf(trialPersonsByQuser[j] ) !== -1 ){
trialAmountByQuser[j] += Number(cols[14].replace(/,/g, '')) + 0;
trialCountByQuser[j] += 1;
}
}
}
engine.log("totalAmountTrials: " + totalAmountTrials);
text = "";
text += "<table cellpadding=3D\"2\" cellspacing=3D\"2\" bgcolor=\"#eeeeee\">";
for (var i=0; i < qusers.size();i++){
text += "<tr style=\"font-family:Meiryo\">";
text += "<td bgcolor=\"#ffffff\" align=\"left\" style=\"background-color:#ffffff; padding:2px; text-align:left\">" + trialPersonsByQuser[i]+ "</td>";
text += "<td bgcolor=\"#ffffff\" align=\"right\" style=\"background-color:#ffffff; padding:2px; text-align:right\">" + trialAmountByQuser[i] + "円(税抜)</td>";
text += "<td bgcolor=\"#ffffff\" align=\"right\" style=\"background-color:#ffffff; padding:2px; text-align:right\">" + trialCountByQuser[i] + "件</td>";
text += "</tr>";
engine.log("trialPersonsByQuser[" + i + "]:" + trialPersonsByQuser[i]);
engine.log("trialAmountByQuser[" + i + "]:" + trialAmountByQuser[i]);
engine.log("trialCountByQuser[" + i + "]:" + trialCountByQuser[i]);
}
text += "</table>";
engine.setDataByVarName("q_total_amount_trials", new java.math.BigDecimal(totalAmountTrials));
engine.setDataByVarName("q_Individual_totalization_trials", text);
}
「集計レポート」HTML メール Body:メッセージ開始イベント(メール)(click to open)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>#{#q_target_month} 営業活動レポート</title>
</head>
<body bgcolor="#ffffff" style="background-color:#ffffff; margin:0 auto; padding:0; width:100%; font-family:Meiryo">
<table width="640" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#ffffff" style="width:100%; max-width:640px; border:none; margin:0 auto; padding:0; background-color:#ffffff">
<tr>
<td>
<h2 style="font-size:1.8em; color:#009900; font-family:Meiryo"> #{#q_target_month} 営業活動レポート</h2>
</td>
</tr>
<tr>
<td>
<h3 style="font-size:1.6em; font-family:Meiryo"> 集計対象リード件数</h3>
</td>
</tr>
<tr>
<td style="font-family:Meiryo">#{#q_target_month} にリード管理期間(1ヶ月)を終えたリード件数です。</td>
</tr>
<tr>
<td style="font-family:Meiryo">
<table cellpadding= "4" cellspacing= "4" bgcolor="#eeeeee">
<tr>
<td bgcolor="#ffffff" align= "left" style="background-color:#ffffff; padding:2px; text-align:left">リード件数</td>
<td bgcolor="#ffffff" align= "right" style="background-color:#ffffff; padding:2px; text-align:right">#{#q_filtered_all_count_lead}件</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<h3 style="font-size:1.6em; font-family:Meiryo"> 受注 結果</h3>
</td>
</tr>
<tr>
<td style="font-family:Meiryo">#{#q_target_month} 、リード管理期間(1ヶ月)の結果です。</td>
</tr>
<tr>
<td style="font-family:Meiryo">
<table cellpadding= "4" cellspacing= "4" bgcolor="#eeeeee">
<tr>
<td bgcolor="#ffffff" align= "left" style="background-color:#ffffff; padding:2px; text-align:left">受注件数</td>
<td bgcolor="#ffffff" align= "right" style="background-color:#ffffff; padding:2px; text-align:right">#{#q_filtered_all_count_order}件</td>
</tr>
<tr>
<td bgcolor="#ffffff" align= "left" style="background-color:#ffffff; padding:2px; text-align:left">受注総額 </td>
<td bgcolor="#ffffff" align= "right" style="background-color:#ffffff; padding:2px; text-align:right">#{#q_total_amount_orders}円(税抜)</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><br></td>
</tr>
<tr>
<td style="font-family:Meiryo"> #{#q_Individual_totalization_orders} </td>
</tr>
<tr>
<td>
<h3 style="font-size:1.6em; font-family:Meiryo"> 案件化取り組み 結果</h3>
</td>
</tr>
<tr>
<td style="font-family:Meiryo">#{#q_target_month} 、リード管理期間(1ヶ月)の結果です。</td>
</tr>
<tr>
<td style="font-family:Meiryo">
<table cellpadding= "4" cellspacing= "4" bgcolor="#eeeeee">
<tr>
<td bgcolor="#ffffff" align= "left" style="background-color:#ffffff; padding:2px; text-align:left">案件化件数</td>
<td bgcolor="#ffffff" align= "right" style="background-color:#ffffff; padding:2px; text-align:right">#{#q_filtered_all_count_trial}件</td>
</tr>
<tr>
<td bgcolor="#ffffff" align= "left" style="background-color:#ffffff; padding:2px; text-align:left">案件化率</td>
<td bgcolor="#ffffff" align= "right" style="background-color:#ffffff; padding:2px; text-align:right">#{#q_to_trial_rate}%</td>
</tr>
<tr>
<td bgcolor="#ffffff" align= "left" style="background-color:#ffffff; padding:2px; text-align:left">見込み額 </td>
<td bgcolor="#ffffff" align= "right" style="background-color:#ffffff; padding:2px; text-align:right">#{#q_total_amount_trials}円(税抜)</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><br></td>
</tr>
<tr>
<td style="font-family:Meiryo"> #{#q_Individual_totalization_trials} </td>
</tr>
<tr>
<td height="32" style="height:2.0em"></td>
</tr>
<tr>
<td height="24" bgcolor="#eeeeee" style="height:1.5em; background:#eeeeee"></td>
</tr>
<tr>
<td width="100%" align="center" bgcolor="#eeeeee" style="width:100%; text-align:center; background:#eeeeee; font-size:.8em"> <a href="https://example.com/">ABC Corp.</a> </td>
</tr>
<tr>
<td width="100%" align="center" bgcolor="#eeeeee" style="width:100%; text-align:center; background:#eeeeee; font-size:.7em"> 不明点があれば事務局<officer@sample.co.jp>までご連絡ください。 </td>
</tr>
<tr>
<td height="24" bgcolor="#eeeeee" style="height:1.5em; background:#eeeeee"></td>
</tr>
<tr>
<td height="24" style="height:1.5em"></td>
</tr>
</table>
</body>
</html>
Capture




