...
Introduction
What are Hash Variable?
English |
---|
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 :
...
Tip |
---|
To conveniently access the list of all hash variables available, use shortcut combination Ctrl -+ Shift -+ 3 in any of the components above to bring up the hash variable assistant.
Image Added |
Nested Hash Variable
...
- 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".
- img2base64 - hash variable escape method to convert image tag src in a Rich Text Editor to base64 data string which can be displayed in email (however Gmail does not support Base64).
- expression - Used to escape String characters in nested hash variable that may otherwise conflict with syntax/symbols used in the Expression Hash Variable
- noescape - Used to escape SQL query strings in JDBC binders to prevent the "<>" "not equal" operator from being converted, i.e. disables XSS prevention checking. (Available from Joget DX 7.0.7 and higher.)
Note: The following escape formats will not be checked for XSS prevention: "regex, json, javascript, html, xml, java, sql, url, expression, noescape".
Code Block |
---|
|
#envVariable.script?java#
#envVariable.script?nl2br;json#
#form.table.users?separator(, )# |
...
Hash
...
Variable
...
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#
Return Values
- If the record does not exist, "#form.table.field#" returns the same = "#form.table.field#". Use the ternary operator ( condition ? exprIfTrue : exprIfFalse ) to check and set to NULL if the return value matches the origin hash variable (if used in BeanShell or Javascript).
- If record exist but field is empty, "#form.table.field#" returns empty = "".
- If record exist and field has value "abc", "#form.table.field#" returns the value = "abc".
Some hash variables listed below are not available in the Joget Community Edition, read the Detailed Plugin Comparison Between Editions for more information.
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 | - #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
Panel |
---|
borderColor | purple |
---|
titleBGColor | #ddccff |
---|
borderStyle | solid |
---|
title | New in Joget DX |
---|
|
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 | - #process.recordId#
#process
|
Workflow Process Hash Variable
Panel |
---|
borderColor | purple |
---|
titleBGColor | #ddccff |
---|
borderStyle | solid |
---|
title | New in Joget DX |
---|
|
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 | - #process.recordId#
#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[{assignment.processId}]# |
...
Name | Description |
---|
Prefix | currentUser |
Description | To retrieve currently logged in user information. More user hash variables here. |
Attributes | - #currentUser.id#username#
- #currentUser.username#firstName#
- #currentUser.firstName#lastName#
- #currentUser.lastName#fullName#
- #currentUser.email#
- #currentUser.active#
- #currentUser.timeZone#
- #currentUser.locale#
- #currentUser.roles#
In Joget Enterprise edition, these additional attributes are available:- User Meta Employment - #currentUser.employee.code#
- #currentUser.employee.jobTitle#
- #currentUser.employee.isHod#
HOD - #currentUser.hod.username#
- #currentUser.hod.firstName#
- #currentUser.hod.lastName#
- #currentUser.hod.email#
- #currentUser.hod.active#
- #currentUser.hod.timeZone#
Organization - #currentUser.organization.id#
- #currentUser.organization.name#
- #currentUser.organization.description#
Department - #currentUser.department.id#
- #currentUser.department.name#
- #currentUser.department.description#
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#
Grade - #currentUser.grade.id#
- #currentUser.grade.name#
- #currentUser.grade.description#
Group - #currentUser.groups.id#
- #currentUser.groups.name#
|
Scope of Use | - All components within the App.
|
...
Name | Description |
---|
Prefix | date |
Description | To get date time according to a specified format. Info |
---|
| The returned value would follow current logged in user's timezone. If user's information is not available, then it will use server's timezone. |
|
Attributes |
Info |
---|
| dateFormat - In Java date format; e.g., yyyy-MM-dd for 2011-06-01
dateUnit integerValue - Numeric integer value. E.g. 10
|
Info |
---|
INPUT_DATE_VALUE accepts any date value and even nested hash variables, e.g: form data hash variable. See example in sample attributes below. INPUT_VALUE_FORMAT is the INPUT_DATE_VALUE original format. DATE_FORMAT_TO defines the format to change to. |
The above date hash with format control will use the login user's time zone setting and automatically adjust the date and time. If the user's time zone setting is blank, it wil revert to the System Settings "System Time Zone" property. If you want to perform a date formatting without using the time zone value, download and import the Date Formatter Hash Variable plugin from Joget Marketplace. |
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. |
...
Name | Description |
---|
Prefix | form |
Description | To get field value from form table. |
Attributes | - #form.tableName.fieldId #
- #form.tableName.fieldId[recordId]# (Available in v3.1 and above) where "recordid" is a reserved variable used by Joget to retrieve the subform's id.
|
Scope of Use | - In a Process Tool part of a Process.
- In a Form.
- In a process design.
|
Sample Attributes | #form.registrationtableName.registeredDate# // will Will use the current record ID
#form.registrationtableName.registeredDate[ 0001 ]# // Where 0001 is the record ID to seek for to seek for
#form.tableName.registeredDate[{variable.varId}]#
registrationregisteredDatevariable. |
Form Binder Hash Variable
...
Name | Description |
---|
Prefix | user |
Description | To get user information based on username. Replace the username below in red with the actual username (example admin) or {currentUser.username}. |
Attributes | - #user.username.id#username#
- #user.username.username#firstName#
- #user.username.firstName#lastName#
- #user.username.lastName#fullName#
- #user.username.email#
- #user.username.active#
- #user.username.timeZone#
In Joget Enterprise edition, these additional attributes are available:- User Meta - #user.username.meta.KEY#
To read additional user meta data stored in dir_user_meta table. Example: #user.cat.meta.duration# will return the value "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#
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 | - All components within the App.
|
Sample Attributes | - #user.admin.groups.name#
- #user.{currentUser.username}.
| - groups.name#
- #user.admin.email#
Sample Attributes- #user.admin{currentUser.username}.email#
- #user.cat.firstName#
- #user.{requestParam.username}.email# to retrieve the email address of the user passed via url parameter
|
...
Name | Description |
---|
Prefix | variable |
Description | To get the value of a workflow variable in a Process Flow. |
Attributes | |
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 | #variable.approvalStatus# |
Request Hash Variable
|
Sample Attributes | #variable.approvalStatus# |
Request Hash Variable
Name | Description |
---|
Prefix | request |
Description | To get the value from the current HttpServletRequest object of the page view. |
Attributes |
Name | Description |
---|
Prefix | request |
Description | To get the value from the current HttpServletRequest object of the page view. |
Attributes | - #request.domainURL# Short syntax to retrieve the URL scheme and host name, for example "http://localhost:8080". (Available from Joget DX v7.0.8 and higher.)
- #request.baseURL# Short syntax to retrieve the URL scheme, for example "http://localhost:8080/jw". (Available from Joget DX v7.0.8 and higher.)
| - #request.characterEncoding#
- #request.contextPath#
- #request.header.NAME# , where NAME is the custom header 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 | - 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. Code Block |
---|
| #request.header.Referer# |
See following example of retrieving a Joget APP URL using the Request Hash Variable. Code Block |
---|
language | text |
---|
title | Request Hash Variable for an App's URL |
---|
| #request.scheme#://#request.serverName#:#request.serverPort##request.contextPath#/web... |
|
...
Name | Description |
---|
Prefix | datalist |
Description | To display the datalist records in a grid format in your form or email tool. |
Attributes | - #datalist.html.ID#
- #datalist.csv.ID#
- #datalist.size.ID#.size.ID# = Size returns only the number of records based on Datalist filter.
- #datalist.total.ID# = Total returns the record count regardless of Datalist filter.
- #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]#
|
Scope of Use | - All components within the App.
|
Sample Attributes | - #datalist.html.myDataList#
- #datalist.csv.ImyDataList#
- #datalist.size.ImyDataList# = Size returns only the number of records based on Datalist filter.
- #datalist.total.ImyDataList# = Total returns the record count regardless of Datalist filter.
- #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.com]#
- #datalist.html.list_f1[d-1338250-fn_id={process.recordId}]#
- #datalist.html.listId[filterId={form.table.field[{envVariable.variableId}]}]#
|
Expression Hash Variable (New)
Panel |
---|
borderColor | purple |
---|
borderWidth | 1 |
---|
titleBGColor | #ddccff |
---|
borderStyle | solid |
---|
title | New Feature |
---|
|
This is a new feature in Joget DX. |
|
This is a new feature in Joget DX. |
Name | Description |
---|
Prefix | exp |
Description | Mathematical and string operations on hash variables |
Attributes | #exp.variable# |
Scope of Use | - All components within the App.
|
Sample Attributes | 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****!
|
Name | Description |
---|
Prefix | exp |
Description | Mathematical and string operations on hash variables |
Attributes | #exp.variable# |
Scope of Use | - All components within the App.
|
Sample Attributes | 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- .charAt(0)# = H
- #exp.'{envVariable.str1?expression}'.substringcontains(5'World')# = World!true
- #exp.'{envVariable.str1?expression}'.toLowerCase()# = hello world!#exp.equalsIgnoreCase('{envVariable.str1?expression}'.toUpperCasetoLowerCase())# = HELLO WORLD!true
- #exp.'{envVariable.str1empty?expression}'.replace('world', 'there'isEmpty()# = Hello World!true
- #exp.'{envVariable.str1?expression}'.replaceFirstindexOf('[a-z]', '*'World')# = H*llo World!6
- #exp.'{envVariable.str1?expression}'.replaceAlllastIndexOf('[a-z]', '*World')# = H**** W****!6
- #exp.'{envVariable.str1?expression}'.charAtstartsWith(0'H')# = Htrue
- #exp.'{envVariable.str1?expression}'.containsendsWith('World!')# = true
Custom Methods - #exp.$isParsed('{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
|
...
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 (New)
Panel |
---|
borderColor | purple |
---|
borderWidth | 1 |
---|
titleBGColor | #ddccff |
---|
borderStyle | solid |
---|
title | New Feature |
---|
|
This is a new feature in Joget DX if you are using the Report Builder custom plugin. |
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 | - All components within the App.
|
Sample Attributes | - #reportLink.financialReport#
|
Code Builder Hash Variable (New)
Panel |
---|
borderColor | purple |
---|
borderWidth | 1 |
---|
titleBGColor | #ddccff |
---|
borderStyle | solid |
---|
title | New Feature |
---|
|
This is a new feature in Joget DX if you are using the Report Code Builder custom plugin. |
Name | Description |
---|
Prefix | reportLinkcode |
Description | To retrieve the particular report template based on the reportIdcode snippet ID. |
Attributes | - #reportLink.rp_report01##code.cs-templateId#
|
Scope of Use | - All components within the App.
|
Sample Attributes | - #reportLink#code.financialReport#cs-calculationScript#
|
Hash Variables In Joget Marketplace
Download Demo App
...
name | APP_hash_variable_dx_kb.jwaheight | 150