Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

What is it for?

Thai

มีไว้เพื่ออะไร?

  • English
    Joget Workflow provided Bean Shell implementation as several Plugin Types. Please refer to usages section.
    Thai

    Joget Workflow ให้การใช้งาน Bean Shell เป็นปลั๊กอินหลายประเภท โปรดดู usages

  • BeanShell is a small, embeddable Java source interpreter with object scripting language features written in Java.

    Thai

    BeanShell เป็นล่าม Java ขนาดเล็กที่สามารถฝังตัวได้พร้อมคุณสมบัติภาษาสคริปต์วัตถุที่เขียนด้วยภาษาจาวา

  • BeanShell dynamically executes standard Java syntax in runtime.

    Thai

    BeanShell เรียกใช้งานไวยากรณ์ Java มาตรฐานแบบไดนามิกในรันไทม์

  • By using BeanShell Plugin, you can type in valid Java codes in plugin configuration and the statements will be executed when the plugin is triggered.

    Thai

    โดยใช้ BeanShell Plugin คุณสามารถพิมพ์รหัส Java ที่ถูกต้องในการกำหนดค่าปลั๊กอินและคำสั่งจะถูกดำเนินการเมื่อมีการเรียกใช้ปลั๊กอิน

  • No compilation cycle is needed.

    Thai

    ไม่จำเป็นต้องมีวงจรการรวบรวม

...

Code Block
languagejava
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.joget.apps.app.service.AppUtil;
import org.joget.apps.form.model.Element;
import org.joget.apps.form.model.FormData;
import org.joget.apps.form.model.FormRow;
import org.joget.apps.form.model.FormRowSet;
import org.joget.commons.util.LogUtil;
  
public FormRowSet load(Element element, String username, FormData formData) { 
    FormRowSet rows = new FormRowSet();
    if (username != null && !username.isEmpty()) {
        Connection con = null;
        try {
            // retrieve connection from the default datasource
            DataSource ds = (DataSource)AppUtil.getApplicationContext().getBean("setupDataSource");
            con = ds.getConnection();
         
            // execute SQL query
            if(!con.isClosed()) {
                PreparedStatement stmt = con.prepareStatement("SELECT username, firstName, lastName, email from dir_user where username=?");
                stmt.setObject(1, username);
                ResultSet rs = stmt.executeQuery();
                while (rs.next()) {
                    FormRow row = new FormRow();
                    System.out.println(rs.getObject("username") );
                    row.setProperty("username", (rs.getObject("username") != null)?rs.getObject("username").toString():"");
                    row.setProperty("firstName", (rs.getObject("firstName") != null)?rs.getObject("firstName").toString():"");
                    row.setProperty("lastName", (rs.getObject("lastName") != null)?rs.getObject("lastName").toString():"");
                    row.setProperty("email", (rs.getObject("email") != null)?rs.getObject("email").toString():"");
                    
                    rows.add(row);
					//we add break; so that it stops iterating after the first result is returned
                    break;
                }
            }
        } catch(Exception e) {
            LogUtil.error("Sample app - Form 1", e, "Error loading user data in load binder");
        } finally {
            //always close the connection after used
            try {
                if(con != null) {
                    con.close();
                }
            } catch(SQLException e) {/* ignored */}
        }
    }
    return rows;
}
  
//call load method with injected variable
return load(element, primaryKey, formData);

...

Code Block
languagejava
linenumberstrue
import java.util.Arrays;
import org.joget.apps.form.model.Element;
import org.joget.apps.form.model.FormData;
import org.joget.apps.form.service.FormUtil;
    
if(values[0].length() > 500){
    String id = FormUtil.getElementParameterName(element);
    formData.addFormError(id, "Value cannot be longer than 500 characters. You have entered " + values[0].length() + " characters.");
    return false;
}else{
    return true;
}

Use as Form Multi Row Load Binder

Thai

ใช้เป็น Load Binder สำหรับโหลดฟอร์มหลายแถว

Injected Variables:

Thai

ตัวแปรที่ฉีด:

...

Field value does not exceed 500 in numerical value

Code Block
languagejava
linenumberstrue
import java.util.Arrays;
import org.joget.apps.form.model.Element

...

;
import org.joget.apps.form.model.FormData;
import org.joget.apps.form.service.FormUtil;

String id = FormUtil.getElementParameterName(element);
String amount = "";
if(values.length > 0){
    amount = values[0];
}

if(amount.isEmpty()){
    formData.addFormError(id, "Please key in a amount.");
    return false;
}else{
    float amountF = Float.parseFloat(amount);
    if(amountF >=500){
        formData.addFormError(id, "Amount cannot be more than 500.");
        return false;
    }
}

return true;


Use as Form Multi Row Load Binder

Thai

ใช้เป็น Load Binder สำหรับโหลดฟอร์มหลายแถว

Injected Variables:

Thai

ตัวแปรที่ฉีด:

    • element - Element that this binder is tie to. (org.joget.apps.form.model.Element)

      Thai

      องค์ประกอบ - องค์ประกอบที่สารยึดเกาะนี้จะผูกกับ (org.joget.apps.form.model.Element)

    • primaryKey - The primary key provided

      .Element)

      primaryKey - The primary key provided by the element to load data. (java.lang.String)

      Thai

      primaryKey - คีย์หลักที่ได้รับจากองค์ประกอบในการโหลดข้อมูล (java.lang.String)

    • formData - The data holder of the whole form. (org.joget.apps.form.model.FormData)

      Thai

      formData - ผู้ถือข้อมูลของทั้งฟอร์ม (org.joget.apps.form.model.FormData)

...

    • datalist - Datalist object of the current datalist (org.joget.apps.datalist.model.Datalist)

      Thai

      datalist - วัตถุ datalist ของ datalist ปัจจุบัน (org.joget.apps.datalist.model.Datalist)

    • column - The current datalist column object (org.joget.apps.datalist.model.DataListColumn)

      Thai

      column - วัตถุคอลัมน์ datalist ปัจจุบัน (org.joget.apps.datalist.model.DataListColumn)

    • row - row Object of current record row in the datalist.
      To retrieve the property value from Object row, use this service method: DataListService.evaluateColumnValueFromRow(Object row, String propertyName)

      Thai

      row - row วัตถุของแถวเร็กคอร์ดปัจจุบันใน datalist
      ในการดึงค่าคุณสมบัติจากแถวออบเจกต์ให้ใช้วิธีการบริการนี้: DataListService.evaluateColumnValueFromRow (Object row, String propertyNameName)

       

    • value - value of the current row as String

      Thai

      value - ค่าของแถวปัจจุบันเป็น String

...