You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 8
Next »
What is Hash Variable?
Hash Variables gives users greater flexibility and freedom in accessing useful information or relevant run-time values from the system.
A hash variable is a special hash-escaped keyword that can be used in :
- Form Builder
- Datalist Builder
- Userview Builder
- Supported plugin configuration properties
- Activity name in Workflow Designer
- External Form URL when mapping an activity to an external form
to return the value of some useful runtime variables from Joget components.
Nested Hash Variable
A Hash Variable can be used inside another Hash Variable to form a Nested Hash Variable.
The syntax for the inner Hash Variable is wrapped by a pair of {curly bracket}.
#prefix.{prefix.variableKey}#
Here's some examples:
#date.{envVariable.dateFormat}#
#user.{variable.username}.firstName#
#form.tableChild.field1[{form.tableParent.childId}]#
Escaping the Resultant Hash Variable
The parsed/returned Hash Variable may cause incompatibility with the current context/environment such as syntax error in a script.
Therefore, one may pass in additional parameters into the hash variable declared to escape certain characters.
Before ending a hash variable with a hash "#", add a question mark character "?" followed by the required format. You may include multiple by defining semicolon ";" separated values.
- regex - Used to escape regular expression special characters
- json - Used to escape JSON special characters
- javascript - Used to escape Javascript special characters
- html - Used to escape HTML special characters
- xml - Used to escape XML special characters
- java - Used to escape Java special characters
- sql - Used to escape SQL special characters
- url - Used to escape URL special characters
- nl2br - Used to convert new line character to <br> HTML tag
- separator(SEPARATOR_CHARS) - Used to change the default separator ";" to the SEPARATOR_CHARS. eg. ?separator(, ) resulted "abc, def" instead of "abc;def".
#envVariable.script?java#
#envVariable.script?nl2br;json#
#form.table.users?separator(, )#
nl2br and separator are new features in Joget Workflow v6.
List of Hash Variables
Workflow Assignment Hash Variable
New attributes added in Joget Workflow v6.
- processDefIdWithoutVersion
- appId
Name | Description |
---|
Prefix | assignment |
Description | To get workflow activity information of the current assignment. |
Attributes | - #assignment.processId#
- #assignment.processDefId#
- #assignment.processDefIdWithoutVersion#
- #assignment.processName#
- #assignment.processVersion#
- #assignment.processRequesterId#
- #assignment.appId#
- #assignment.activityId#
- #assignment.activityName#
- #assignment.activityDefId#
- #assignment.assigneeId#
|
Scope of Use | - Elements within and part of a Process.
- Activity Name.
- Form mapped as part of process activity mapping.
- Email Tool configuration as part of process tool mapping.
|
Sample Attributes | To display the assignee's name: #user.{assignment.assigneeId}.firstName# #user.{assignment.assigneeId}.lastName# |
Workflow Process Hash Variable
This is a new feature in Joget Workflow v6.
Name | Description |
---|
Prefix | process |
Description | To retrieve information of a workflow process instance. |
Attributes | #process.appId# #process.processId# #process.processDefId# #process.processDefIdWithoutVersion# #process.processName# #process.processVersion# #process.processRequesterId# #process.state# #process.startedTime# #process.limit# #process.due# #process.delay# #process.delayInSeconds# #process.finishTime# #process.timeConsumingFromDateStarted# #process.timeConsumingFromDateStartedInSeconds# #process.activityInst.ACTIVITY_DEF_ID.instanceId# #process.activityInst.ACTIVITY_DEF_ID.name# #process.activityInst.ACTIVITY_DEF_ID.status# #process.activityInst.ACTIVITY_DEF_ID.state# #process.activityInst.ACTIVITY_DEF_ID.type# #process.activityInst.ACTIVITY_DEF_ID.startedTime# #process.activityInst.ACTIVITY_DEF_ID.limit# #process.activityInst.ACTIVITY_DEF_ID.limitInSeconds# #process.activityInst.ACTIVITY_DEF_ID.due# #process.activityInst.ACTIVITY_DEF_ID.delay# #process.activityInst.ACTIVITY_DEF_ID.delayInSeconds# #process.activityInst.ACTIVITY_DEF_ID.finishTime# #process.activityInst.ACTIVITY_DEF_ID.timeConsumingFromDateStarted# #process.activityInst.ACTIVITY_DEF_ID.timeConsumingFromDateStartedInSeconds# #process.activityInst.ACTIVITY_DEF_ID.performer# #process.activityInst.ACTIVITY_DEF_ID.performerUser# #process.activityInst.ACTIVITY_DEF_ID.assignmentUsers#
#process.appId[PROCESS_INSTANCE_ID]# #process.processDefId[PROCESS_INSTANCE_ID]# #process.processDefIdWithoutVersion[PROCESS_INSTANCE_ID]# #process.processName[PROCESS_INSTANCE_ID]# #process.processVersion[PROCESS_INSTANCE_ID]# #process.processRequesterId[PROCESS_INSTANCE_ID]# #process.startedTime[PROCESS_INSTANCE_ID]# #process.limit[PROCESS_INSTANCE_ID]# #process.due[PROCESS_INSTANCE_ID]# #process.delay[PROCESS_INSTANCE_ID]# #process.delayInSeconds[PROCESS_INSTANCE_ID]# #process.finishTime[PROCESS_INSTANCE_ID]# #process.timeConsumingFromDateStarted[PROCESS_INSTANCE_ID]# #process.timeConsumingFromDateStartedInSeconds[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.instanceId[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.name[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.status[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.state[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.type[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.startedTime[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.limit[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.limitInSeconds[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.due[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.delay[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.delayInSeconds[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.finishTime[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.timeConsumingFromDateStarted[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.timeConsumingFromDateStartedInSeconds[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.performer[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.performerUser[PROCESS_INSTANCE_ID]# #process.activityInst.ACTIVITY_DEF_ID.assignmentUsers[PROCESS_INSTANCE_ID]#
|
Scope of Use | - Elements within and part of a Process.
- Activity Name.
- Form mapped as part of process activity mapping.
- Email Tool configuration as part of process tool mapping.
|
Sample Attributes | To display the performer username of an activity instance of a process instance: #process.activityInst.assign.performerUser[{assingment.processId}]# |
Current User Hash Variable
Name | Description |
---|
Prefix | currentUser |
Description | To retrieve currently logged in user information. |
Attributes | - #currentUser.id#
- #currentUser.username#
- #currentUser.firstName#
- #currentUser.lastName#
- #currentUser.email#
- #currentUser.active#
- #currentUser.timeZone#
In Joget Enterprise edition, these additional attributes are available:- User Meta Organization - #currentUser.organization.id#
- #currentUser.organization.name#
- #currentUser.organization.description#
Department - #currentUser.department.id#
- #currentUser.department.name#
- #currentUser.department.description#
- #currentUser.department.treeStructure#
Grade - #currentUser.grade.id#
- #currentUser.grade.name#
- #currentUser.grade.description#
- #currentUser.grade.organizationId#
HOD - #currentUser.hod.username#
- #currentUser.hod.firstName#
- #currentUser.hod.lastName#
- #currentUser.hod.email#
- #currentUser.hod.active#
- #currentUser.hod.timeZone#
Group - #currentUser.groups.id#
- #currentUser.groups.name#
Employment - #currentUser.employee.code#
- #currentUser.employee.jobTitle#
- #currentUser.employee.isHod#
Department HOD - #currentUser.department.hod.username#
- #currentUser.department.hod.firstName#
- #currentUser.department.hod.lastName#
- #currentUser.department.hod.email#
- #currentUser.department.hod.active#
- #currentUser.department.hod.timeZone#
|
Scope of Use | - All components within the App.
|
Date Hash Variable
Name | Description |
---|
Prefix | date |
Description | To get date time according to a specified format. |
Attributes | |
Scope of Use | - All components within the App.
|
Sample Attributes | #date.h:mm a# // shows current time of 12:08 PM #date.EEE,d MMM yyyy h:mm:ss a# // shows current date time of Wed, 4 Jul 2014 12:08:56 PM #date.DAY+7.EEE,d MMM yyyy h:mm:ss a# // Add 7 days on top of current date time - Wed, 11 Jul 2014 12:08:56 PM #date.DAY-1.EEE,d MMM yyyy h:mm:ss a# // Minus 1 days on top of current date time - Wed, 3 Jul 2014 12:08:56 PM #date.dd-MM-yyyy[{form.j_expense_claim.title}|yyyy-MM-dd]# // Retrieves date from j_expense_claim table, form field title, changes its origin format of yyyy-MM-dd to dd-MM-yyyy. |
Environment Variable Hash Variable
Name | Description |
---|
Prefix | envVariable |
Description | To retrieve Environment Variable value. Learn more about Environment Variables . |
Attributes | |
Scope of Use | - Anywhere within the Joget app itself. (i.e. Process, Process Tool, Form, List, Userview)
|
Sample Attributes | #envVariable.smtpServer# #envVariable.smtpPort#
|
Name | Description |
---|
Prefix | form |
Description | To get field value from form table. |
Attributes | - #form. tableName . fieldId #
- #form. tableName . fieldId [recordId]# (Available in 3.1 and above)
|
Scope of Use | - In a Process Tool part of a Process.
- In a Form.
- In a process design.
|
Sample Attributes | #form.registration.registeredDate# //will use the current record ID
#form.registration.registeredDate[ 0001 ]# //0001 is the record ID to seek for
#form.registration.registeredDate[{variable.recordId}]#
|
This is a new feature in Joget Workflow v6.
Name | Description |
---|
Prefix | binder |
Description | To get field value or field value label from the binder of a form via its form definition id . The 'binder' prefix retrieves the field value, while the 'binder.options' prefix retrieves the lookup field (eg. select box, checkbox & radio button) option label. The field value or field value label can also be obtained from other apps by including the APP_ID, else it uses the current app context. By providing the PRIMARY_KEY argument, field value or field value label from a different record can be retrieved, else data from the current record id is retrieved instead. |
Attributes | - #binder.APP_ID.FORM_DEF_ID.FIELD_ID#
- #binder.APP_ID.FORM_DEF_ID.FIELD_ID[PRIMARY_KEY]#
- #binder.FORM_DEF_ID.FIELD_ID#
- #binder.FORM_DEF_ID.FIELD_ID[PRIMARY_KEY]#
- #binder.options.APP_ID.FORM_DEF_ID.FIELD_ID#
- #binder.options.APP_ID.FORM_DEF_ID.FIELD_ID[PRIMARY_KEY]#
- #binder.options.FORM_DEF_ID.FIELD_ID#
- #binder.options.FORM_DEF_ID.FIELD_ID[PRIMARY_KEY]#
|
Scope of Use | - In a Process Tool part of a Process.
- In a Form.
- In a process design.
|
Sample Attributes | #binder.addCard.title# #binder.cardViewer.addCard.title# #binder.cardViewer.addCard.title[b30bce20-c0a82095-14976e70-fded1735]# #binder.options.addCard.title# #binder.options.cardViewer.addCard.title# #binder.options.cardViewer.addCard.title[b30bce20-c0a82095-14976e70-fded1735]# |
App Definition Hash Variable
This is a new feature in Joget Workflow v6.
Name | Description |
---|
Prefix | appDef |
Description | To retrieve App Definition information |
Attributes | #appDef.appId# #appDef.dateCreated# #appDef.dateModified# #appDef.version# #appDef.license# #appDef.name# #appDef.published#
|
Scope of Use | - All components within the App.
|
Sample Attributes | To display the app definition name: #appDef.name# |
ตัวแปรแฮชข้อความของแอป (App Message Hash Variable) (Internationalization)
ชื่อ | คำอธิบาย |
---|
Prefix | i18n |
Description | เพื่อสนับสนุนการแปลภาษาในระดับแอพลิเคชัน |
Attributes | |
Scope of Use | - ส่วนประกอบทั้งหมดภายใน App
|
Sample Attributes | #i18n.logout#
|
Example | โปรดดูที่ Add Message. |
ชื่อ | คำอธิบาย |
---|
Prefix | performer |
Description | เพื่อรับข้อมูลผู้ใช้ของผู้กระทำของกิจกรรม |
Attributes | - #performer. activityDefId .id#
- #performer. activityDefId .username#
- #performer. activityDefId .firstName#
- #performer. activityDefId .lastName#
- #performer. activityDefId .email#
- #performer. activityDefId .active#
- #performer. activityDefId .timeZone#
|
Scope of Use | |
Sample Attributes | - #performer.runProcess.firstName#
- #performer.submitLeave.firstName#
|
ตัวแปรแฮชของการร้องขอพารามิเตอร์ (Request Parameter Hash Variable)
ชื่อ | คำอธิบาย |
---|
Prefix | requestParam |
Description | ในการเข้าถึงค่าของการร้องขอพารามิเตอร์ |
Attributes | - #requestParam.parameterName[separator]#
- ตัวคั่น (หรือ;) สามารถระบุได้ว่าการร้องขอใช้ในตัวกรองข้อมูลที่มีหลายค่าเพื่อกำหนดอักขระตัวคั่นในเอาต์พุตข้อมูล เครื่องหมายจุลภาค ","จะใช้เป็นค่าเริ่มต้นถ้าไม่มีการระบุตัวคั่น
|
Scope of Use | - ส่วนประกอบทั้งหมดภายใน App
|
Sample Attributes | - #requestParam.key# สามารถนำมาใช้โดยเฉพาะเพื่อรับ Userview Key value.
- #requestParam.name[;]# เพื่อระบุตัวแปร 'name' จะเก็บค่าหลายค่าคั่นด้วยเครื่องหมายอัฒภาค ตัวอย่างเช่นคำสั่ง SQL นี้ "select * from expenses where title in (#requestParam.title[,]#)" จะได้รับการแปลเป็น "select * from expenses where title in (a,b,c)" เพื่อรองรับหลายค่าในคำสั่ง "where-in"
- ในเพจ Userview อาจเข้าถึงแอตทริบิวต์ต่อไปนี้
- #requestParam.key#
- #requestParam.userviewId#
- #requestParam.menuId#
- #requestParam.appId#
|
ตัวแปรแฮชของผู้ใช้ (User Hash Variable)
ชื่อ | คำอธิบาย |
---|
Prefix | user |
Description | เพื่อรับข้อมูลผู้ใช้โดยอิงจาก username. |
Attributes | - #user. username .id#
- #user. username .username#
- #user. username .firstName#
- #user. username .lastName#
- #user. username .email#
- #user. username .active#
- #user. username .timeZone#
ใน Joget Enterprise edition แอตทริบิวต์เพิ่มเติมเหล่านี้จะพร้อมใช้งาน:- User Meta - #user. username .meta.KEY#
ในการอ่านข้อมูลเมตาของผู้ใช้เพิ่มเติมที่เก็บไว้ในตาราง dir_user_meta ตัวอย่าง: #user.cat.meta.duration# จะรีเทิร์นค่า "100".
Organization - #user. username .organization.id#
- #user. username .organization.name#
- #user. username .organization.description#
Department - #user. username .department.id#
- #user. username .department.name#
- #user. username .department.description#
- #user. username .department.treeStructure#
Grade - #user. username .grade.id#
- #user. username .grade.name#
- #user. username .grade.description#
- #user. username .grade.organizationId#
HOD - #user. username .hod.username#
- #user. username .hod.firstName#
- #user. username .hod.lastName#
- #user. username .hod.email#
- #user. username .hod.active#
- #user. username .hod.timeZone#
Group - #user. username .groups.id#
- #user. username .groups.name#
Employment - #user. username .employee.code#
- #user. username .employee.jobTitle#
- #user. username .employee.isHod#
Department HOD - #user. username .department.hod.username#
- #user. username .department.hod.firstName#
- #user. username .department.hod.lastName#
- #user. username .department.hod.email#
- #user. username .department.hod.active#
- #user. username .department.hod.timeZone#
|
Scope of Use | - ส่วนประกอบทั้งหมดภายใน App
|
Sample Attributes | - #user.admin.email#
- #user.cat.firstName#
- #user.{requestParam.username}.email# เพื่อดึงที่อยู่อีเมลของผู้ใช้ที่ส่งผ่านพารามิเตอร์ url
|
ตัวแปรแฮชของ Userview Key (Userview Key Hash Variable)
ชื่อ | คำอธิบาย |
---|
Prefix | userviewKey |
Description | ตัวแปรแฮชของ Userview Key ถูกใช้เพื่อวัตถุประสงค์ในการเข้าถึง Userview key's value ปัจจุบันเท่านั้น กรณีการใช้งานทั่วไปสำหรับตัวแปร hash นี้คือ:- - การกรองข้อมูลตาม Userview Key
- การโหลดล่วงหน้าฟิลด์ข้อมูลฟอร์มบางอย่าง (เช่นฟอร์มย่อย) ในแบบฟอร์มหรือส่วนหนึ่งของผังกระบวนการตาม Userview Key
|
Attributes | |
Scope of Use | |
ตัวแปรแฮชของตัวแปรเวิร์กโฟลว์ (Workflow Variable Hash Variable)
ชื่อ | คำอธิบาย |
---|
Prefix | variable |
Description | เพื่อรับค่าของตัวแปรเวิร์กโฟลว์ใน Process Flow |
Attributes | - #variable. variableName #
|
Scope of Use | |
Sample Attributes | #variable.approvalStatus# |
Request Hash Variable
ชื่อ | คำอธิบาย |
---|
Prefix | request |
Description | เพื่อรับค่าจากวัตถุ HttpServletRequest ปัจจุบันของมุมมองเพจ |
Attributes | - #request.characterEncoding#
- #request.contextPath#
- #request.header.NAME# , โดยที่ NAME เป็นชื่อส่วนหัวที่กำหนดเอง
- #request.locale#
- #request.method#
- #request.pathInfo#
- #request.protocol#
- #request.queryString#
- #request.remoteAddr#
- #request.requestURI#
- #request.requestURL#
- #request.requestedSessionId#
- #request.scheme#
- #request.serverName#
- #request.serverPort#
- #request.servletPath#
|
Scope of Use | - ส่วนประกอบทั้งหมดภายใน App ที่มีวัตถุ Httpservletrequest ที่ถูกต้อง วัตถุดังกล่าวจะไม่พร้อมใช้งานในกิจกรรมพื้นหลังเช่นในเครื่องมือกระบวนการที่ทริกเกอร์เป็นผลมาจากกำหนดเวลา
|
Sample Attributes |
เมื่อต้องการดึงค่าแอตทริบิวต์ส่วนหัว "อ้างถึง" ในภาพหน้าจอด้านบนหนึ่งอาจใช้ตัวแปร hash ต่อไปนี้ |
นี่คือฟีเจอร์ใหม่ใน Joget Workflow v6
ชื่อ | คำอธิบาย |
---|
Prefix | platform |
Description | เพื่อเรียกข้อมูลเฉพาะแพลตฟอร์ม |
Attributes | #platform.name# #platform.version# #platform.jdbcDriver# #platform.setting.dataFileBasePath# #platform.setting.deadlineCheckerInterval# #platform.setting.defaultUserview# #platform.setting.fileSizeLimit# #platform.setting.landingPage# #platform.setting.systemDateFormat# #platform.setting.systemLocale# #platform.setting.systemTimeZone#
ใน Joget Enterprise edition แอตทริบิวต์เพิ่มเติมเหล่านี้จะพร้อมใช้งาน:- #platform.license.name# #platform.license.holder# #platform.license.users# #platform.license.appLimit# #platform.license.expiry# #platform.license.activated# #platform.systemKey#
|
Scope of Use | - ส่วนประกอบทั้งหมดภายใน App
|
ตัวแปรแฮชของผู้ใช้ (Users Hash Variable)
นี่คือฟีเจอร์ใหม่ใน Joget Workflow v6
ชื่อ | คำอธิบาย |
---|
Prefix | users |
Description | เพื่อดึงข้อมูลของผู้ใช้ทั้งหมดในกลุ่ม, เกรด, แผนกและองค์กรที่เลือก ผลลัพธ์หลายจะถูกคั่นด้วยเครื่องหมายอัฒภาค |
Attributes | #users.group.GROUP_ID.username# #users.group.GROUP_ID.firstName# #users.group.GROUP_ID.lastName# #users.group.GROUP_ID.fullName# #users.group.GROUP_ID.email#
#users.grade.GRADE_ID.username# #users.grade.GRADE_ID.firstName# #users.grade.GRADE_ID.lastName# #users.grade.GRADE_ID.fullName# #users.grade.GRADE_ID.email#
#users.department.DEPARTMENT_ID.username# #users.department.DEPARTMENT_ID.firstName# #users.department.DEPARTMENT_ID.lastName# #users.department.DEPARTMENT_ID.fullName# #users.department.DEPARTMENT_ID.email#
#users.organization.ORGANIZATION_ID.username# #users.organization.ORGANIZATION_ID.firstName# #users.organization.ORGANIZATION_ID.lastName# #users.organization.ORGANIZATION_ID.fullName# #users.organization.ORGANIZATION_ID.email#
|
Scope of Use | - ส่วนประกอบทั้งหมดภายใน App
|
Sample Attributes | หากต้องการส่งคืนผู้ใช้ทั้งหมดในรหัสกลุ่มของผู้ใช้ปัจจุบัน: |
ตัวแปรแฮชของ Bean Shell (Bean Shell Hash Variable)
นี่คือฟีเจอร์ใหม่ใน Joget Workflow v6
ชื่อ | คำอธิบาย |
---|
Prefix | beanshell |
Description | การใช้ตัวแปรสภาพแวดล้อมเพื่อรันสคริปต์ Bean Shell ส่งผ่านพารามิเตอร์โดยใช้ไวยากรณ์สตริงค้นหา URL |
Attributes | |
Scopeof Use | - ส่วนประกอบทั้งหมดภายใน App
|
Sample Attributes | การเรียกใช้สคริปต์ที่เก็บไว้ใน "ยินดีต้อนรับ"ตัวแปรสภาพแวดล้อมที่มีพารามิเตอร์ "username" และ "dept":
if (username != null && username.length == 1 && !username[0].isEmpty()) {
return "Welcome " + username[0] + " (" + dept[0] + "),";
} else {
return "";
}
- #beanshell.welcome[username={currentUser.username}&dept={currentUser.department.name}]#
|