These are formats and examples for retrieving and updating business data in a [Script Task].
BPMN Icon: [Script Task]
Script Format
Data retrieving
const value = engine.findDataByVarName("Field Name");
const value = engine.findDataByName("Data Item Name");
const value = engine.findDataByNumber("Data Definition ID");
const value = engine.findDataByNumber(Data Definition ID);
const value = engine.findData(ProcessDataDefinitionView Object);
(Obsolete) const value = data.get("Data Definition ID");
Data updating
engine.setDataByVarName("Field Name", value in format according to data type);
engine.setDataByName("Data Item Name", value in format according to data type);
engine.setDataByNumber("Data Definition ID", value in format according to data type);
engine.setDataByNumber(Data Definition ID, value in format according to data type);
engine.setData(ProcessDataDefinitionView Object, value in format according to data type);
(Obsolete) retVal.put("Data Definition ID", value in format according to data type);
Script Example
Title
Data retrieving
processInstance.getProcessInstanceTitle();
Data updating
processInstance.setProcessInstanceTitle("title");
Process Sequence Number
Data retrieving
processInstance.getProcessInstanceSequenceNumber();
Data updating
(Not applicable)
Process ID
Data retrieving
processInstance.getProcessInstanceId();
Data updating
(Not applicable)
- Please refer to [R2300: Java Classes available in Script Task] for "Process Start User Name" and other items.
String-type
Object type of data retrieving / assignment
- Retrieving:
-
java.lang.String
-
- Updating:
java.lang.String
Data retrieving
let text = "";
const string = engine.findDataByNumber("0"); // single line
text += string;
text += '\n';
engine.setDataByNumber("19", text); //overwriting String-type multiple-lines
Data updating
engine.setDataByNumber("0", "Hello"); //single line
engine.setDataByNumber("1", "Good bye\nSee you"); //multiple lines
Numeric-type
Object type of data retrieving / updating
- Retrieving:
java.math.BigDecimal
- Assignment:
java.math.BigDecimal
Data retrieving
let text = "";
const decimal = engine.findDataByNumber("2"); // Numeric-type
text += new java.text.DecimalFormat('#,###.0').format(decimal);
text += '\n';
engine.setDataByNumber("19", text); //overwriting String-type multiple-lines
Data updating
engine.setDataByNumber("2", new java.math.BigDecimal(123)); //number
engine.setDataByNumber("2", new java.math.BigDecimal(Math.random()));//number
engine.setDataByNumber("2", BigDecimal.valueOf(9.87)); //decimal
engine.setDataByNumber("2", new java.math.BigDecimal("9.87")); //decimal
Select-type
Object type of data retrieving / updating
- Retrieving:
-
java.util.Listofcom.questetra.bpms.core.event.scripttask.ItemView
-
- Assignment:
-
String(values of Choices) -
java.util.ListofString(values of Choices) -
com.questetra.bpms.core.event.scripttask.ItemView- Sees Choice values only
-
java.util.Listofcom.questetra.bpms.core.event.scripttask.ItemView
-
Data retrieving
let text = "";
let selects = engine.findDataByNumber("5"); // Check Box
for (let i=0; i < selects.size(); i++){
const select = selects.get(i);
text += select.getValue() + ":" + select.getDisplay();
text += '\n';
}
selects = engine.findDataByNumber("6"); // Search Select
const select = selects.get(0);
text += select.getValue() + ":" + select.getDisplay();
text += '\n';
engine.setDataByNumber("19", text); //overwriting String-type multiple-lines
Data updating
let selects = new java.util.ArrayList();
selects.add("JP");
selects.add("US");
engine.setDataByNumber("5", selects); //Check Box
selects = new java.util.ArrayList();
selects.add("GB");
engine.setDataByNumber("6", selects); //Search Select
Date-type
Object type of data retrieving / updating
- Retrieving:
- Assignment:
java.sql.Date
*AddableDate is a sub-class of java.sql.Date
Data retrieving
let text = "";
const date = engine.findDataByNumber("7"); // Date-type
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); //overwriting String-type multiple-lines
Data updating
engine.setDataByNumber("7", java.sql.Date.valueOf("2011-02-02"));//Date-type
engine.setDataByNumber("8", new java.sql.Date(millisec) ); //Date-type
Datetime-type
Object type of data retrieving / updating
- Retrieving:
- Assignment:
java.sql.Timestamp
*AddableTimestamp is a sub-class of java.sql.Timestamp
Data retrieving
let text = "";
const datetime = engine.findDataByNumber("11"); // Datetime-type
const formatter = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm");
text += formatter.format(datetime.addMonths(2));
text += '\n';
engine.setDataByNumber("19", text); //overwriting String-type multiple-lines
Data updating
engine.setDataByNumber("11", java.sql.Timestamp.valueOf("2013-07-16 12:34:56")); //Datetime-type
const myDate = engine.findDataByNumber( "7" ); // Date-type, 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
File-type
Object type of data retrieving / updating
- Retrieving:
-
java.util.Listofcom.questetra.bpms.core.event.scripttask.QfileView
-
- Assignment:
com.questetra.bpms.core.event.scripttask.QfileView-
java.util.Listofcom.questetra.bpms.core.event.scripttask.QfileView com.questetra.bpms.core.event.scripttask.NewQfile-
java.util.Listofcom.questetra.bpms.core.event.scripttask.NewQfile
Data retrieving
let text = "";
const files = engine.findDataByNumber("16"); // File-type
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); // overwriting String-type multiple-lines
Data updating
let files = engine.findDataByNumber("16"); //File-type
// handling when there is no file
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); //overwriting File-type
User-type
Object type of data retrieving / updating
- Retrieving:
- Assignment:
Data retrieving
let text = '';
const quser = engine.findDataByNumber("13"); // User-type
text += quser.getName() + '<' + quser.getEmail() + '>\n';
engine.setDataByNumber("2", text); // overwriting String-type multiple-lines
Data updating
const quser = quserDao.findByEmail("Galapagos@questetra.com"); // Searching for User by email address
engine.setDataByNumber("13", quser); // overwriting User-type
Organization-type
Object type of data retrieving / updating
- Retrieving:
- Assignment:
Data retrieving
let text = '';
const qgroup = engine.findDataByNumber("15"); // Organization-type
text += qgroup.getName() + '<' + qgroup.getEmail() + '>';
engine.setDataByNumber("19", text); // overwriting String-type multiple-lines
Data updating
const qgroup = qgroupDao.findByName("00 Company"); // retrieving Organization
engine.setDataByNumber("15", qgroup); // overwriting Organization-type
Discussion-type
Object type of data retrieving / updating
(Not applicable)
Table-type
Object type of data retrieving / updating
- Retrieving:
- Assignment:
Data retrieving
const mytable = engine.findDataByNumber("17"); // Table-type
let i=0;
const n = mytable.size();
let csvStr = "";
for (i=0; i < n; i++){
csvStr += mytable.get(i, 0) + ","; //Column number
csvStr += mytable.get(i, "name") + ","; // Field Name
csvStr += mytable.get(i, "unit_price") + ",";
csvStr += mytable.get(i, 3) + ",";
csvStr += mytable.get(i, 4) + "\n";
}
engine.setDataByNumber("19", csvStr); // overwriting String-type multiple-lines
Data updating
const def = engine.findDataDefinitionByNumber("17");
let table = engine.findData(def);
// handling when there is no row
if (table == null) {
table = def.createListArray();
}
if (table.size() >= 2) {
table.getRow(1).setCol(0, "Good bye"); //modifying the second row
table.removeRow(0); // deleting the first row
}
const row = table.addRow();
row.put ("greeting", "Hello");
row.put ("name", "Japan Railway");
row.put ("unit_price", "220");
row.setCol(3, "5");
// row.setCol(4, ""); Not necessary, because the initial values of each column in the added row are empty
engine.setData(def, table);
Guide Panel-type
Object type of data retrieving / updating
(Not applicable)
Comments
0 comments
Article is closed for comments.