...
Introduction
What are Hash Variables?
...
English |
---|
Hash variables in Joget are placeholders used to dynamically display data within applications. They allow users to insert dynamic content without hardcoding values, which enhances flexibility and customization. Hash variables can fetch and display data from various sources such as forms, workflows, and the system itself. They promote customization and flexibility by avoiding hardcoded values, ultimately improving the user-friendliness of Joget applications. |
A hash variable is a special hash-escaped keyword that can be used in :
...
Figure 2: Property Assistant - Nested Hash Variable
List Of Joget DX Hash Variables
...
System-wide Hash Variable
...
Panel |
---|
...
|
...
|
...
|
...
To get workflow activity information of the current assignment.
...
- #assignment.processId#
- #assignment.processDefId#
- #assignment.processDefIdWithoutVersion#
- #assignment.processName#
- #assignment.processVersion#
- #assignment.processRequesterId#
- #assignment.appId#
- #assignment.activityId#
- #assignment.activityName#
- #assignment.activityDefId#
- #assignment.assigneeId#
...
- 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.
...
To display the assignee's name:
#user.{assignment.assigneeId}.firstName# #user.{assignment.assigneeId}.lastName#
| |||||||||
This is a new feature in Joget DX 8.2. |
The System Variables menu introduces system-wide Hash Variables, which allows users to create and define custom hash variables that can be used in Property Assistant. This means that system-wide hash variables can be used in any app as it is not tied to any specific app.
System-wide Hash Variables can be accessed in Property Assistant using the #sysVariable.KEY# hash variable, where KEY is defined in the System Variables settings page.
List Of Joget DX Hash Variables
Workflow Assignment Hash Variable
Name | Description |
---|---|
Prefix | assignment |
Description | To get workflow activity information of the current assignment. |
Attributes |
|
Scope of Use |
|
Sample Attributes | To display the assignee's name: #user.{assignment.assigneeId}.firstName# #user.{assignment.assigneeId}.lastName# |
Workflow Process Hash Variable
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
A new #process.recordId# hash variable was introduced in Joget DX to retrieve the process database table id (or primary key value) which will return the UUID id value of the process record stored in app_fd_[form_table_name], if the General Settings > Run Process Primary Key is set to "UUID". If the "Run Process Primary Key" option in General Settings is set to "Process instance ID", the "#process.recordId#" will return the same value as "#process.processId#". Read related documentation: |
Name | Description |
---|---|
Prefix | process |
Description | To retrieve information of a workflow process instance. |
Attributes |
|
Workflow Process Hash Variable
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
A new #process.recordId# hash variable was introduced in Joget DX to retrieve the process database table id (or primary key value) which will return the UUID id value of the process record stored in app_fd_[form_table_name], if the General Settings > Run Process Primary Key is set to "UUID". If the "Run Process Primary Key" option in General Settings is set to "Process instance ID", the "#process.recordId#" will return the same value as "#process.processId#". Read related documentation: |
Name | Description |
---|---|
Prefix | process |
Description | To retrieve information of a workflow process instance. |
Attributes |
|
Scope of Use |
|
Sample Attributes | To display the performer username of an activity instance of a process instance: #process.activityInst.assign.performerUser[{assignment.processId}]# |
...
Name | Description |
---|---|
Prefix | userviewKey |
Description | Userview Key Hash Variable is used solely for the purpose of accessing the current UI key's value. Typical use case for this hash variable are:-
|
Attributes |
|
Scope of Use |
Workflow Variable Hash Variable
...
Name | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Prefix | request | ||||||||||||
Description | To get the value from the current HttpServletRequest object of the page view. | ||||||||||||
Attributes |
| Scope of Use | All components within the App where there is valid HttpServletRequest object. Such object will not be available in background activity such as in Process Tool triggered as a result of Deadlines.|||||||||||
Sample Attributes | To retrieve the "Referer" header attribute value in the screenshot above, one may use the following hash variable.
See following example of retrieving a Joget APP URL using the Request Hash Variable.
|
Platform Hash Variable
...
#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#
...
- #platform.setting.smtpHost#
- #platform.setting.smtpPort#
- #platform.setting.smtpSecurity#
- #platform.setting.smtpUsername#
- #platform.setting.smtpPassword#
- #platform.setting.smtpEmail#
...
#platform.license.holder#
#platform.license.users#
#platform.license.appLimit#
#platform.license.expiry#
#platform.license.activated#
#platform.systemKey#
...
- All components within the App.
Users Hash Variable
...
#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#
...
- All components within the App.
...
To return all the users in the current user's groups id:
- #users.group.{currentUser.groups.id}.fullName#
- #users.department.D-005.username#
- #users.group.G-001.email#
| |||||||||||||
Scope of Use |
| ||||||||||||
Sample Attributes | To retrieve the "Referer" header attribute value in the screenshot above, one may use the following hash variable.
See following example of retrieving a Joget APP URL using the Request Hash Variable.
|
Platform Hash Variable
Name | Description |
---|---|
Prefix | platform |
Description | To retrieve platform specific information. |
Attributes |
|
Attributes For SMTP |
|
Additional attributes for Joget Enterprise & Professional editions |
|
Scope of Use |
|
Users Hash Variable
Name | Description |
---|---|
Prefix | users |
Description | To retrieve information of all the users in the selected group, grade, department and organization. Multiple results will be separated by semicolon. |
Attributes |
|
Scope of Use |
|
Sample Attributes | To return all the users in the current user's groups id:
|
Bean Shell Hash Variable
Name | Description | |||||
---|---|---|---|---|---|---|
Prefix | beanshell | |||||
Description | Using App Variable to execute bean shell script. Passing parameter using URL query string syntax. | |||||
Attributes |
| |||||
Scope of Use |
| |||||
Sample Attributes | To execute a script stored in the "welcome" app variable with parameter "username" and "dept":
| |||||
Related Tutorials |
Datalist Hash Variable
Panel | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
The "datalist.col" (highlighted in Bold in the table below) Hash Variables are a new feature in DX 8 that allows users to access and display a List's column data in multiple formats. |
Name | Description |
---|---|
Prefix | datalist |
Description | To display the List records in a grid format in your form or email tool. |
Attributes |
|
Scope of Use |
|
Sample Attributes |
|
** for "datalist.col.xx.ID.column" variables, the "column" parameter refers to the order of the column in the list starting from 0. hence, to refer to the first column in a list called list_f1, your hash variable would look like this : #datalist.col.sum.list_f1.column_0
** the column are counted from 0, and does not include the default checkbox included in list tables
Expression
...
Hash Variable
Name | Description | |||||
---|---|---|---|---|---|---|
Prefix | beanshellexp | |||||
Description | Using App Variable to execute bean shell script. Passing parameter using URL query string syntax. | Mathematical and string operations on hash variables | ||||
Attributes | #exp.variable# | Attributes | #beanshell.APP_VARIABLE# | |||
Scope of Use |
| |||||
Sample Attributes | To execute a script stored in the "welcome" app variable with parameter "username" and "dept":
| |||||
Related Tutorials |
Datalist Hash Variable
Panel | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
The "datalist.col" (highlighted in Bold in the table below) Hash Variables are a new feature in DX 8 that allows users to access and display a List's column data in multiple formats. |
...
- #datalist.html.ID#
- #datalist.csv.ID#
- #datalist.size.ID#
- #datalist.total.ID#
- #datalist.json.ID#
- #datalist.col.csv.ID.column#
- #datalist.col.sum.ID.column#
- #datalist.col.avg.ID.column#
- #datalist.col.csv.ID.column[FILTER_PARAMETERS]#
- #datalist.col.sum.ID.column[FILTER_PARAMETERS]#
- #datalist.col.avg.ID.column[FILTER_PARAMETERS]#
- #datalist.html.ID[FILTER_PARAM1=FILTER_VALUE1&FILTER_PARAM2=FILTER_VALUE2]#
- #datalist.csv.ID[FILTER_PARAM1=FILTER_VALUE1&FILTER_PARAM2=FILTER_VALUE2]#
- #datalist.size.ID[FILTER_PARAM1=FILTER_VALUE1&FILTER_PARAM2=FILTER_VALUE2]#
- #datalist.total.ID[FILTER_PARAM1=FILTER_VALUE1&FILTER_PARAM2=FILTER_VALUE2]#
...
- All components within the App.
...
- #datalist.html.myDataList#
- #datalist.csv.ImyDataList#
- #datalist.size.ImyDataList#
- #datalist.total.ImyDataList#
- #datalist.html.myDataList[d-8015999-fn_name=James&d-6304176-fn_email=james@gmail.com]#
- #datalist.csv.myDataList[d-8015999-fn_name=James&d-6304176-fn_email=james@gmail.com]#
- #datalist.size.myDataList[d-8015999-fn_name=James&d-6304176-fn_email=james@gmail.com]#
- #datalist.total.myDataList[d-8015999-fn_name=James&d-6304176-fn_email=james@gmail.com]#
- #datalist.html.list_f1[d-1338250-fn_id={process.recordId}]#
- #datalist.html.listId[filterId={form.table.field[{envVariable.variableId}]}]#
Testing Values
Mathematical operators
Logical operators
Relational operators
Ternary Operator (If Else)
String methods Note: Basically most of the String methods can be used, using `?expression` to escape single quote in value.
Custom Methods
Math methods Note: All java.lang.Math methods can be used.
|
Report Builder Hash Variable
Warning |
---|
The API IP/Domain Whitelist setting in General Settings needs to be configured in order for reportLink hash variable to work. If a request is from a non-whitelisted IP/domain, the response will be a HTTP 400 Bad Request. |
Name | Description |
---|---|
Prefix | reportLink |
Description | To retrieve the particular report based on the reportId. To know more about Report Builder, see here. |
Attributes |
|
Scope of Use |
|
Sample Attributes |
|
Code Builder Hash Variable
Name | Description |
---|---|
Prefix | code |
Description | To retrieve the template based on the code snippet ID. |
Attributes |
|
Scope of Use |
|
Sample Attributes |
|
uiListCount Hash Variable
Panel | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
This is a new feature in Joget DX 8. |
Name | Description | ||
---|---|---|---|
Prefix | uiListCount | ||
Description | The uiListCount hash variable is primarily utilized to retrieve the Datalist or Inbox menu count value. | ||
Attributes |
| ||
Scope of Use |
| ||
Sample Attributes | See examples below, based on the usage within the default CRM application:
|
Escape Format Hash Variable
Panel | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
This is a new feature in Joget DX 8. |
Name | Description | ||
---|---|---|---|
Prefix | ?decimal(decimal_number) | ||
Description | The escape format hash variable used to allow the formatting of decimal places.
| ||
Attributes |
| ||
Scope of Use |
| ||
Sample Attributes |
|
Stats Hash Variable
Name | Description |
---|---|
Prefix | stats |
Description | Display various Joget system and app statistics. |
Attributes |
|
Scope of Use |
|
Sample Attributes |
|
Expression Hash Variable
...
- All components within the App.
...
Testing Values
- #envVariable.num1# = 55
- #envVariable.num2# = 288
- #envVariable.double1# = 123.45
- #envVariable.double2# = 246.78
- #envVariable.bool1# = true
- #envVariable.bool2# = false
- #envVariable.str1# = Hello World!
- #envVariable.str2# = Using Joget Hash Variables!
- #envVariable.empty# =
- #envVariable.hashVariable# = #assignment.processId#
Mathematical operators
- #exp.{envVariable.num1} + {envVariable.num2}# = 343
- #exp.{envVariable.num1} - {envVariable.num2}# = -233
- #exp.{envVariable.double1} * {envVariable.double2}# = 30464.991
- #exp.{envVariable.num2} / {envVariable.num1}# = 5
- #exp.{envVariable.num1} % 7# = 6
- #exp.({envVariable.num1} + 2) * 2# = 114
- #exp.{envVariable.num1} + 2 * 2# = 59
- #exp.2 ^ 2# = 4
Logical operators
- #exp.{envVariable.bool1} and {envVariable.bool2}# = false
- #exp.{envVariable.bool1} or {envVariable.bool2}# = true
- #exp.!{envVariable.bool1}# = false
Relational operators
- #{envVariable.num1} gt {envVariable.num2}# = false
- #{envVariable.num1} ge {envVariable.num1}# = true
- #{envVariable.num1} lt {envVariable.num2}# = true
- #{envVariable.num1} le {envVariable.num1}# = true
- #{envVariable.num1} eq {envVariable.num1}# = true
- #{envVariable.num1} ne {envVariable.num1}# = false
Ternary Operator (If Else)
- #exp.({envVariable.num1} lt {envVariable.num2})?{envVariable.num1}:{envVariable.num2}#= 55
- #exp.'{envVariable.empty?expression}'.isEmpty()?'empty':'has value'#= empty
String methods
Note: Basically most of the String methods can be used, using `?expression` to escape single quote in value.
- #exp.'{envVariable.str1?expression}' + ' ' + '{envVariable.str2?expression}'# = Hello World! Using Joget Hash Variables
- #exp.'{envVariable.str1?expression}'.substring(5)# = World!
- #exp.'{envVariable.str1?expression}'.toLowerCase()# = hello world!
- #exp.'{envVariable.str1?expression}'.toUpperCase()# = HELLO WORLD!
- #exp.'{envVariable.str1?expression}'.replace('world', 'there')# = Hello World!
- #exp.'{envVariable.str1?expression}'.replaceFirst('[a-z]', '*')# = H*llo World!
- #exp.'{envVariable.str1?expression}'.replaceAll('[a-z]', '*')# = H**** W****!
- #exp.'{envVariable.str1?expression}'.charAt(0)# = H
- #exp.'{envVariable.str1?expression}'.contains('World')# = true
- #exp.'{envVariable.str1?expression}'.equalsIgnoreCase('{envVariable.str1?expression}'.toLowerCase())# = true
- #exp.'{envVariable.empty?expression}'.isEmpty()# = true
- #exp.'{envVariable.str1?expression}'.indexOf('World')# = 6
- #exp.'{envVariable.str1?expression}'.lastIndexOf('World')# = 6
- #exp.'{envVariable.str1?expression}'.startsWith('H')# = true
- #exp.'{envVariable.str1?expression}'.endsWith('!')# = true
Custom Methods
- #exp.$isParsed('{envVariable.hashVariable}')# = false
Math methods
Note: All java.lang.Math methods can be used.
- #exp.$sin(30)# = -0.9880316240928618
- #exp.$cos(30)# = 0.15425144988758405
- #exp.$tan(30)# = -6.405331196646276
- #exp.$asin(30)# = NaN
- #exp.$acos(30)# = NaN
- #exp.$atan(30)# = 1.5374753309166493
- #exp.$sinh(30)# = 5.343237290762231E12
- #exp.$cosh(30)# = 5.343237290762231E12
- #exp.$tanh(30)# = 1.0
- #exp.$abs(-7)# = 7.0
- #exp.$max(60,30)# = 60.0
- #exp.$min(60,30)# = 30
- #exp.$round(79.52)# = 80
- #exp.$sqrt(12)# = 3.4641016151377544
- #exp.$cbrt(81)# = 4.326748710922225
- #exp.$pow(4, 2)# = 16.0
- #exp.$signum(82.7)# = 1.0
- #exp.$ceil(82.7)# = 83.0
- #exp.$copySign(740.4, -29.1)# = -740.4
- #exp.$nextAfter(84352.24, 154.284)# = 84352.234
- #exp.$nextUp(744.93)# = 744.93005
- #exp.$nextDown(744.93)# = 744.9299999999998
- #exp.$floor(744.93)# = 744.0
- #exp.$floorDiv(25, 3)# = 8
- #exp.$random()# = 0.3988245190916774
- #exp.$rint(81.68)# = 82.0
- #exp.$hypot(8, 6)# = 10.0
- #exp.$ulp(8.1)# = 9.536743E-7
- #exp.$getExponent(50.45)# = 5
- #exp.$IEEEremainder(387.1, 4.2)# = 0.7000000000000064
- #exp.$addExact(469, 737)# = 1206
- #exp.$subtractExact(469, 737)# = -268
- #exp.$multiplyExact(469, 737)# = 345653
- #exp.$incrementExact(674)# = 675
- #exp.$decrementExact(674)# = 673
- #exp.$negateExact(674)# = -674
- #exp.$toIntExact(-829)# = -829
- #exp.$log(38.9)# = 3.6609942506244004
- #exp.$log10(38.9)# = 1.5899496013257077
- #exp.$log1p(26)# = 3.295836866004329
- #exp.$exp(2)# = 7.38905609893065
- #exp.$expm1(2)# = 6.38905609893065
- #exp.$toDegrees(5)# = 286.4788975654116
- #exp.$toRadians(180.0)# = 3.141592653589793
Report Builder Hash Variable
Warning |
---|
The API IP/Domain Whitelist setting in General Settings needs to be configured in order for reportLink hash variable to work. If a request is from a non-whitelisted IP/domain, the response will be a HTTP 400 Bad Request. |
...
To retrieve the particular report based on the reportId.
To know more about Report Builder, see here.
...
- #reportLink.rp_report01#
...
- All components within the App.
...
- #reportLink.financialReport#
Code Builder Hash Variable
...
To retrieve the template based on the code snippet ID.
...
- #code.cs-templateId#
...
- All components within the App.
...
- #code.cs-calculationScript#
uiListCount Hash Variable
The uiListCount hash variable is primarily utilized to retrieve the Datalist or Inbox menu count value.
- #uiListCount.MENU_ID#
- #uiListCount.UI_ID.MENU_ID#
- All components within the App.
See examples below, based on the usage within the default CRM application:
Hash Variables In Joget Marketplace
Download Demo App
View file | ||
---|---|---|
|
|