Beezr Docs
Platform Documentation
Beezr Language Framework (Beezl)

One of the pillars of Beezr is to provide a dynamic platform for developers and power users to build their ideas.

In order to provide that level of flexibility we extended JavaScript to create Beezl which is short for Beezr Language.

Basically, Beezl allows developers to write custom functionality in steps, fields, and components. A sample of this can be seen in the following image.



The above example is from an HR application we built earlier. Beezl is used here to dynamically access the Module fields and manipulate the data in order to calculate the proper vacation credit for the employee.

In Beezr this is called smart scripting.

Beezl can be used in various places in the designer space. A few examples of where you'll find yourself using Beezl are:
  1. Beezr Flow
  2. Conditional Formating in data views
  3. Auto-calculated (Smart Fields) type
We will talk in detail about the different use cases you can use Beezl in each area of the designer.

Beezl Syntax

Beezl syntax is similar to JavaScript, the difference is the computing engine in the background. The most important thing the developer needs to understand is how to access the variable.

Module variables can be accessed in the following fashion:
$module name$.$field name$

It is basically requesting to access the intended attribute from the object. In order to make it simpler for the developer; we’ve added an auto-complete (CTRL + space) feature to help in developing smart scripts.

Another thing you can do is access context parameters such as the requestor profile. In Beezr this is called Context parameters and can be accessed in the following manner:

$this$.$user$.$id$
$this$.$user$.$name$
$this$.$user$.$email$


Beezl Functions

We’ve extended the capabilities of Beezl also to include access functions to retrieve data from Modules outside the current request variable pipeline.

These functionalities offer more flexibility when writing more complex smart scripts.
To access the prebuilt function, you only have to start an expression with FunctionManager.X where X will be the name of the function that you can get a list of by using the auto-complete feature (ctrl + space).

Below is the list of supported functions as of this version:

 
Function Name Description
loadValueByClause("targetFieldName", "targetModule", "Clause"); This allows you load a specific value from a module based on an SQL like query. Queries should start with “where”.
loadRecordsByClause("targetModule", "Clause"); Allows you to load a list of records.
evaluateSumFunction Get the sum of a field in a module based on a clause.
evaluateAverageFunction Get the average of a field in a module based on a clause.
evaluateCount Get the number of records in a module based on a clause.
getListFromContext Allows you to access lists from the workflow context.
representNumberAsText Represent a number in its textual representation.
convertToDateFormat Convert a text date into a date object.
representDecimalAsTextWithCurrency Represent a number in its textual representation including the currency values.
convertToMoneyFormat Add thousands separator and default decimal checks.
formatDate Format a date to match a specific pattern.
bulkCreateRecords Bulk creates records.
bulkUpdateRecords Bulk update records.
createRecords Create a single record.
generateRecordTemplate Generates an empty record object for the targeted module with all fields defined, makes it easier for the developer when manually assigning values to a record object before creation.
copyRecord Take a deep copy of a record object to reuse it in different parts of the code safely.