[スクリプトタスク]で業務データを取得したり、業務データに代入したりする際の形式とサンプルです。
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"); // 日時型
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, 1) + ","; csvStr += mytable.get(i, 2) + ","; 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);
ガイドパネル型
データ取得/代入時のオブジェクトの型
(使用不可)
コメント
0件のコメント
記事コメントは受け付けていません。