Versions Compared

Key

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

...

Workflow Process Hash Variable


Infopanel
titleNew in Joget DX

A new #process.recordId# hash variable is introduced in Joget DX to retrieve the process database table id which will return the UUID id value of the process record stored in app_fd_[form_table_name].

NameDescription
Prefixprocess
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.
    1. Activity Name.
    2. Form mapped as part of process activity mapping.
    3. 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

...

NameDescription
Prefixbeanshell
DescriptionUsing environment variable to execute bean shell script. Passing parameter using URL query string syntax.
Attributes
  • #beanshell.ENVIRONMENT_VARIABLE#

  • #beanshell.ENVIRONMENT_VARIABLE[PARAMETERS_URL_QUERY_STRING]#

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

To execute a script stored in "welcome" environment variable with parameter "username" and "dept":

Code Block
languagejava
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}]#
Related Tutorials


Datalist Hash Variable (New in Joget DX)


Panel
borderColorpurple
borderWidth1
titleBGColor#ddccff
borderStylesolid
titleNew Feature

This is a new feature in Joget DX.

NameDescription
Prefixdatalist
DescriptionTo display the datalist records in a grid format in your form or email tool.
Attributes
  • #datalist.html.ID#
  • #datalist.csv.ID#
  • #datalist.html.ID[FILTER_PARAM1=FILTER_VALUE1&FILTER_PARAM2=FILTER_VALUE2]#
  • #datalist.csv.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.html.myDataList[name=James&email=james@gmail.com]#
  • #datalist.csv.myDataList[name=James&email=james@gmail.com]#



Expression Hash Variable (New in Joget DX)


Panel
borderColorpurple
borderWidth1
titleBGColor#ddccff
borderStylesolid
titleNew Feature

This is a new feature in Joget DX.

NameDescription
Prefix{hash variable}
DescriptionMathematical 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?javascript}'.isEmpty()?'empty':'has value'#= empty

String methods

Note: Basically most of the String methods can be used, using `?javascript` to escape single quote in value.

  • #exp.'{envVariable.str1?javascript}' + ' ' + '{envVariable.str2?javascript}'# = Hello World! Using Joget Hash Variables
  • #exp.'{envVariable.str1?javascript}'.substring(5)# = World!
  • #exp.'{envVariable.str1?javascript}'.toLowerCase()# = hello world!
  • #exp.'{envVariable.str1?javascript}'.toUpperCase()# = HELLO WORLD!
  • #exp.'{envVariable.str1?javascript}'.replace('world', 'there')# = Hello World!
  • #exp.'{envVariable.str1?javascript}'.replaceFirst('[a-z]', '*')# = H*llo World!
  • #exp.'{envVariable.str1?javascript}'.replaceAll('[a-z]', '*')# = H**** W****!
  • #exp.'{envVariable.str1?javascript}'.charAt(0)# = H
  • #exp.'{envVariable.str1?javascript}'.contains('World')# = true
  • #exp.'{envVariable.str1?javascript}'.equalsIgnoreCase('{envVariable.str1?javascript}'.toLowerCase())# = true
  • #exp.'{envVariable.empty?javascript}'.isEmpty()# = true
  • #exp.'{envVariable.str1?javascript}'.indexOf('World')# = 6
  • #exp.'{envVariable.str1?javascript}'.lastIndexOf('World')# = 6
  • #exp.'{envVariable.str1?javascript}'.startsWith('H')# = true
  • #exp.'{envVariable.str1?javascript}'.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


Panel
borderColorpurple
borderWidth1
titleBGColor#ddccff
borderStylesolid
titleNew Feature

This is a new feature in Joget DX if you are using the Report Builder custom plugin.

NameDescription
PrefixreportLink
DescriptionTo retrieve the particular report based on the reportId.
Attributes
  • #reportLink.rp_report01#
Scope of Use
  • All components within the App.
Sample Attributes
  • #reportLink.financialReport#


Download Demo App

View file
nameAPP_hash_variable_dx_kb.jwa
height150

...