Versions Compared

Key

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

Table of Contents
outlinetrue
absoluteUrltrue

What is Hash Variable?

Hash Variables gives users greater flexibility and freedom in accessing useful information or relevant run-time values from the system.

...

to return the value of some useful runtime variables from Joget components.

Info
titleLearning More

Download the tutorial app on Hash Variables from Joget Workflow Marketplace to learn more about Hash Variable.

 

Nested Hash Variable

Since version 3.0.3, a Hash Variable can be used inside another Hash Variable to form a Nested Hash Variable.

...

Here's some examples:
Code Block
titleExample
#date.{envVariable.dateFormat}#
#user.{variable.username}.firstName#
#form.tableChild.field1[{form.tableParent.childId}]#

 

Escaping the Resultant Hash Variable

...

Code Block
titleExample
#envVariable.script?java#

List of Hash Variables

Table of Contents
minLevel2
absoluteUrltrue

Workflow Assignment Hash Variable

NameDescription
Prefixassignment
Description

To get workflow activity information of the current assignment.

Attributes
  • #assignment.processId#
  • #assignment.processDefId#
  • #assignment.processName#
  • #assignment.processVersion#
  • #assignment.processRequesterId##assignment.description#
  • #assignment.activityId#
  • #assignment.activityName#
  • #assignment.activityDefId#
  • #assignment.assigneeId#
Scope of Use
  • Elements within and part of a Process.
    1. Activity Name.
    2. Form mapped as part of process activity mapping.
    3. Email Tool configuration as part of process tool mapping.
Sample Attribute

To display the assignee's name:

#user.{assignment.assigneeId}.firstName# #user.{assignment.assigneeId}.lastName#

Current User Hash Variable

NameDescription
PrefixcurrentUser
DescriptionTo 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:-

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.

...

NameDescription
Prefixdate
Description

To get date time according to a specified format.

Info
titleLocalization

In Joget Workflow v5, 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
  • #date. dateFormat #
  • #date.dateUnit[+-]integerValue.dateFormat #
Info
titleOptions

dateFormat

  • In Java date format; e.g., yyyy-MM-dd for 2011-06-01

dateUnit

  • YEAR
  • MONTH
  • DAY

integerValue

  • Numeric integer value. E.g. 10
Scope of Use
  • All components within the App.
Sample Attributes#date.h:mm a# // 12:08 PM
#date.EEE,d MMM yyyy h:mm:ss a# // 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

Environment Variable Hash Variable  

...

NameDescription
Prefixi18n
Description

To support language localization on application level.

Attributes
  • #i18n. keyName #
Scope of Use
  • All components within the App.
Sample Attributes

#i18n.

app.hello#

logout#

Image Added

ExamplePlease see Add Message.

Performer Hash Variable  

NameDescription
Prefixperformer
Description

To get user information of the performer of an activity.

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
  • Elements within and part of a Process.
    1. Activity Name.
    2. Form mapped as part of process activity mapping.
    3. Email Tool configuration as part of process tool mapping.
Info

To get activityDefId (activity definition ID), mouseover the activity name in the Activity Mapping tab (Workflow Management Console); there will be an overlay showing the ID.

Warning

The activity chosen must had already been performed.

Sample Attributes
  • #performer.runProcess.firstName#
  • #performer.submitLeave.firstName#

...

NameDescription
PrefixrequestParam
Description

To access request parameter' values.

Attributes
  • #requestParam.parameterName[separator]#
  • Separator (, or ;) can be indicated if requestParam is used in datalist filter with multiple values, to define the separator character in data output. Comma "," is used as default if no separator is indicated in cases of multiple values.
Scope of Use
  • All components within the App.
Sample Attributes
  • #requestParam.key# can be used specifically to obtain Userview Key value.
  • #requestParam.name[;]# to indicate 'name' variable will store multiple values separated by semicolon. For example, this SQL statement "select * from expenses where title in (#requestParam.title[,]#)" will be translated to "select * from expenses where title in (a,b,c)" to cater for multiple values in "where-in" statement.
  • In a Userview page, one may access the following attributes.
    • #requestParam.key#
    • #requestParam.userviewId#
    • #requestParam.menuId#
    • #requestParam.appId#

User Hash Variable  

NameDescription
Prefixuser
Description

To get user information based on username.

Attributes
  • #user. username .id#
  • #user. username .username#
  • #user. username .firstName#
  • #user. username .lastName#
  • #user. username .email#
  • #user. username .active#
  • #user. username .timeZone#
Scope of Use
  • All components within the App.
Sample Attributes
  • #user.admin.email#
  • #user.cat.firstName#

...

  • #user.{requestParam.username}.email# to retrieve the email address of the user passed via url parameter

Userview Key Hash Variable  

...

NameDescription
Prefixvariable
Description

To get the value of a workflow variable in a Process Flow.

Attributes
  • #variable. variableName #
Scope of Use
  • Elements within and part of a Process.
    1. Activity Name.
    2. Form mapped as part of process activity mapping.
    3. Email Tool configuration as part of process tool mapping.
Sample Attributes#variable.approvalStatus#

Request Hash Variable

NameDescription
Prefixrequest
Description

To get the value from the current HttpServletRequest object of the page view.

Attributes
  • #request.characterEncoding#
  • #request.contextPath#
  • #request.header.NAME#
    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

Image Added

To retrieve the "Referer" header attribute value in the screenshot above, one may use the following hash variable.

Code Block
titleHash Variable
#request.header.Referer#