[スクリプトタスク]で業務データを取得/更新する際の形式とサンプルです。
BPMNアイコン:[スクリプトタスク]
Script の形式
業務データ取得
const value = engine.findDataByVarName("フィールド名");
const value = engine.findDataByName("データ項目名");
const value = engine.findDataByNumber("データ定義番号");
const value = engine.findDataByNumber(データ定義番号);
const value = engine.findData(ProcessDataDefinitionView オブジェクト);
(廃止済み) const value = data.get("データ定義番号");
業務データ更新
engine.setDataByVarName("フィールド名", データ型に応じた形式の値);
engine.setDataByName("データ項目名", データ型に応じた形式の値);
engine.setDataByNumber("データ定義番号", データ型に応じた形式の値);
engine.setDataByNumber(データ定義番号, データ型に応じた形式の値);
engine.setData(ProcessDataDefinitionView オブジェクト, データ型に応じた形式の値);
(廃止済み) retVal.put("データ定義番号", データ型に応じた形式の値);
Scriptのサンプル
件名
データ取得サンプル
processInstance.getProcessInstanceTitle();
データ更新サンプル
processInstance.setProcessInstanceTitle("title");
プロセス連番
データ取得サンプル
processInstance.getProcessInstanceSequenceNumber();
データ更新サンプル
(使用不可)
プロセスID
データ取得サンプル
processInstance.getProcessInstanceId();
データ更新サンプル
(使用不可)
- その他「プロセス開始ユーザの名称」などについては「R2300: スクリプトタスクで利用できる Java クラス」を参照してください
文字型
データ取得/更新時のオブジェクトの型
- 取得:
java.lang.String
- 更新:
java.lang.String
データ取得サンプル
let text = "";
const string = engine.findDataByNumber("0"); // 単一行
text += string;
text += '\n';
engine.setDataByNumber("19", text); //文字型複数行に上書き
データ更新サンプル
engine.setDataByNumber("0", "こんにちは"); //単一行
engine.setDataByNumber("1", "さようなら\nまた明日"); //複数行
数値型
データ取得/更新時のオブジェクトの型
- 取得:
java.math.BigDecimal
- 更新:
java.math.BigDecimal
データ取得サンプル
let text = "";
const decimal = engine.findDataByNumber("2"); // 数値型
text += new java.text.DecimalFormat('#,###.0').format(decimal);
text += '\n';
engine.setDataByNumber("19", text); //文字型複数行に上書き
データ更新サンプル
engine.setDataByNumber("2", new java.math.BigDecimal(123)); //数値
engine.setDataByNumber("2", new java.math.BigDecimal(Math.random()));//数値
engine.setDataByNumber("2", BigDecimal.valueOf(9.87)); //小数
engine.setDataByNumber("2", new java.math.BigDecimal("9.87")); //小数
選択型
データ取得/更新時のオブジェクトの型
- 取得:
-
com.questetra.bpms.core.event.scripttask.ItemViewのjava.util.List
-
- 更新:
-
String(選択肢の値) -
String(選択肢の値)のjava.util.List -
com.questetra.bpms.core.event.scripttask.ItemView- 選択肢の値のみを参照
-
com.questetra.bpms.core.event.scripttask.ItemViewのjava.util.List
-
データ取得サンプル
let text = "";
let selects = engine.findDataByNumber("5"); // チェックボックス
for (let i=0; i < selects.size(); i++){
const select = selects.get(i);
text += select.getValue() + ":" + select.getDisplay();
text += '\n';
}
selects = engine.findDataByNumber("6"); // 検索セレクト
const select = selects.get(0);
text += select.getValue() + ":" + select.getDisplay();
text += '\n';
engine.setDataByNumber("19", text); //文字型複数行に上書き
データ更新サンプル
let selects = new java.util.ArrayList();
selects.add("JP");
selects.add("US");
engine.setDataByNumber("5", selects); //チェックボックス
selects = new java.util.ArrayList();
selects.add("GB");
engine.setDataByNumber("6", selects); //検索セレクト
日付型
データ取得/更新時のオブジェクトの型
- 取得:
- 更新:
java.sql.Date
※ AddableDate は java.sql.Date のサブクラス
データ取得サンプル
let text = "";
const date = engine.findDataByNumber("7"); // 日付型
const formatter = new java.text.SimpleDateFormat("GGGGyyyy年MM月dd日",
new java.util.Locale("ja", "JP", "JP"));
text += formatter.format(date);
text += '\n';
engine.setDataByNumber("19", text); //文字型複数行に上書き
データ更新サンプル
engine.setDataByNumber("7", java.sql.Date.valueOf("2011-02-02")); //日付型
engine.setDataByNumber("8", new java.sql.Date(millisec) ); //日付型
日時型
データ取得/更新時のオブジェクトの型
- 取得:
- 更新:
java.sql.Timestamp
※ AddableTimestamp は java.sql.Timestamp のサブクラス
データ取得サンプル
let text = "";
const datetime = engine.findDataByNumber("11"); // 日時型
const formatter = new java.text.SimpleDateFormat("yyyy年MM月dd日 HH時mm分");
text += formatter.format(datetime.addMonths(2));
text += '\n';
engine.setDataByNumber("19", text); //文字型複数行に上書き
データ更新サンプル
engine.setDataByNumber("11", java.sql.Timestamp.valueOf("2013-07-16 12:34:56")); //日時型
const myDate = engine.findDataByNumber( "7" ); // 日付型, 2019-01-01
engine.setDataByNumber( "12", new java.sql.Timestamp(myDate.getTime() + 1000 * 60 * 60 * 8.75)); // 2019-01-01 08:45
//or
//engine.setDataByNumber( "12", myDate.getFirstTimeInDate().addHours(8).addMinutes(45)); // 2019-01-01 08:45
ファイル型
データ取得/更新時のオブジェクトの型
- 取得:
-
com.questetra.bpms.core.event.scripttask.QfileViewのjava.util.List
-
- 更新:
com.questetra.bpms.core.event.scripttask.QfileView-
com.questetra.bpms.core.event.scripttask.QfileViewのjava.util.List com.questetra.bpms.core.event.scripttask.NewQfile-
com.questetra.bpms.core.event.scripttask.NewQfileのjava.util.List
データ取得サンプル
let text = "";
const files = engine.findDataByNumber("16"); // ファイル型
for (let i=0; i < files.size(); i++){
const file = files.get(i);
text += file.getName() + " (" + file.getLength() + " / " + file.getContentType()+ ")";
text += '\n';
}
engine.setDataByNumber("19", text); // 文字型複数行に上書き
データ更新サンプル
let files = engine.findDataByNumber("16"); //ファイル型
// 添付ファイルが1つもない場合の処理
if (files == null) {
files = new java.util.ArrayList();
}
files.add(new com.questetra.bpms.core.event.scripttask.NewQfile("test.csv","text/csv", "1,2,3"));
engine.setDataByNumber("1", files); //ファイル型に上書き
ユーザ型
データ取得/更新時のオブジェクトの型
- 取得:
- 更新:
データ取得サンプル
let text = '';
const quser = engine.findDataByNumber("13"); // ユーザ型
text += quser.getName() + '<' + quser.getEmail() + '>\n';
engine.setDataByNumber("2", text); // 文字型複数行に上書き
データ更新サンプル
const quser = quserDao.findByEmail("Galapagos@questetra.com"); // メールアドレスでユーザを検索
engine.setDataByNumber("13", quser); // ユーザ型の上書き
組織型
データ取得/更新時のオブジェクトの型
- 取得:
- 更新:
データ取得サンプル
let text = '';
const qgroup = engine.findDataByNumber("15"); // 組織型
text += qgroup.getName() + '<' + qgroup.getEmail() + '>';
engine.setDataByNumber("19", text); // 文字型複数行に上書き
データ更新サンプル
const qgroup = qgroupDao.findByName("00 全社"); // 組織の取得
engine.setDataByNumber("15", qgroup); // 組織型の上書き
掲示板型
データ取得/更新時のオブジェクトの型
(使用不可)
テーブル型
データ取得/更新時のオブジェクトの型
- 取得:
- 更新:
データ取得サンプル
const mytable = engine.findDataByNumber("17"); // テーブル型
let i=0;
const n = mytable.size();
let csvStr = "";
for (i=0; i < n; i++){
csvStr += mytable.get(i, 0) + ","; //列番号
csvStr += mytable.get(i, "name") + ","; //フィールド名
csvStr += mytable.get(i, "unit_price") + ",";
csvStr += mytable.get(i, 3) + ",";
csvStr += mytable.get(i, 4) + "\n";
}
engine.setDataByNumber("19", csvStr); // 文字型複数行に上書き
データ更新サンプル
const def = engine.findDataDefinitionByNumber("17");
let table = engine.findData(def);
// 1行もない場合の処理
if (table == null) {
table = def.createListArray();
}
if (table.size() >= 2) {
table.getRow(1).put('greeting', "さようなら"); //2行目変更
table.removeRow(0); // 1行目削除
}
const row = table.addRow();
row.put("greeting", "こんにちは");
row.put("name", "近鉄");
row.put("unit_price", "220");
row.setCol(3, "5");
// row.setCol(4, ""); 追加された行の各列の初期値は空なので、なくても良い
engine.setData(def, table);
ガイドパネル型
データ取得/更新時のオブジェクトの型
(使用不可)