Activities

Article • 05.01.2021 • 19 minute(s) to read

Activities define what tasks are executed in a Process. Activities are always part of a Process. Activities cover a wide range of possible tasks which can be split into two groups:

  • Tasks requiring interaction with a human operator like scanning a bar code or filling out a form. These task are commonly done by Form Activities.
  • Task that are done by the Novunex Platform like generating reports or sending sending emails. These tasks are done by all Non-Form Activities.

Entry Points and Outcomes

Each Activity has Entry Points and Outcomes to connect it with other Activities. Connections create a directed link from Outcomes to Entry Points. Entry Points are indicated by filled circles and Outcomes by rings. Entry Points have no configurations and simply provide a target for Connections. While it is possible that an any Activity can have multiple incoming Connections, this is only encouraged for Wait Activities, since Wait Activities ensure the proper synchronization of multiple incoming Connections. All other Activities should only have one incoming Connection.

Activities can have multiple Outcomes but each Outcome can only be the origin of one Connection. Hence, one Outcome per outgoing connection must be created. Using multiple Outcomes is the intended way to parallel or to branch a Process. The Outcomes are identified by their name. How Outcomes with different names are handled depends on the Activities and is described in their descriptions below.

Each Outcome has a script that determines if the Connection origination at the Outcome should be followed or not. When you create a new Outcome, a default script is created, ensuring the that the attached connection is always followed. This script can be edited for each Outcome individually and needs to be written as a valid JavaScript function. When a script is entered, the color of the Outcome changes to a darker tone indicating that a script is active for a specific Output. The script must return true when the Connection attached to the Outcome should be followed and false otherwise.

  • At least one script must return true so that the Instance can continue.
  • Multiple scripts can return true, then the Instance will continue in parallel.
  • If all scripts return false, then the Instance will be ended by entering the closed-state. This is not influenced by the Continue on error setting of the Activity, since the Outcomes are evaluated separately after the Activity has already finished.
The script editor allows you to modify the JavaScript Outcome Scripts. Here, the default script is shown that constantly returns true and thus enables the Outcome permanently.

Script Editor

The script editor allows you to modify the JavaScript Outcome Scripts. Here, the default script is shown that constantly returns true and thus enables the Outcome permanently.

The script of an Outcome can access Variables, Start Parameters, Subscript Settings and Configurations available in the Process Context. The script is evaluated after the Activity is finished, but before the Connections are followed. This means, if the Activity modified the Variables, the script will see the modified versions and not the originals.

While the script of Outcomes are powerful and can be used to implement branches, it is preferred to use a dedicated Condition Action for branches. Using a Condition Action makes the branch easier to spot and therefore helps with the understanding of how a Process is organized.

Access Process Context Information

Variables, Start Parameters and Subscription Settings can be read but not changed:

  • context.Entities["MyEntity"] - Access the Entity Variable with the name MyEntity
  • contextParameters["MyContext"].MyContext - Access the Context Variable with the name MyContext
    • contextParameters["MyContext"].MyContext.MyAttributeName - Access the Attribute MyAttributeName of the Context Variable MyEntity
  • context.GlobalSettings.SettingList["SubscriptionSettingName"] - Access the Subscription Settings with the name SubscriptionSettingName
  • contextParameters["StartParameterName"].StartParameterName - Access the Start Parameter with the name StartParameterName
  • context.Activity - Access the properties of the current Activity:
    • context.Activity.Id - ID of the Activity
    • context.Activity.Name - Name of the Activity
    • context.Activity.TimeoutSeconds - Once this time is elapsed, the Activity will be closed and the Process continued. The timeout is deactivated by setting it to zero seconds.
    • context.Activity.ContinueOnError - If set to true, the Instance will continue even if this Activity failed. If set to false, this Instance will fail if the Activity fails.
  • context.ProcessInstance - Access the property of the current Instance:
    • context.ProcessInstance.Id - ID of the Instance
    • context.ProcessInstance.Name - Name of the Instance
    • context.ProcessInstance.TaskDisplayInformation - Holds the task description for the current Activity. The task description is configured in the Additional text for task list property of the Activity.
    • context.ProcessInstance.ParentProcessInstanceId - ID of the Instance that started this Instance, or null if this Instance has no parent Instance and was started by a User.
    • context.ProcessInstance.FromParentActivityId - ID of the Activity that started this Instance, or null if this Instance has no parent Activity.
    • context.ProcessInstance.LastOutcome - Name of the last Outcome this Instance passed though
    • context.ProcessInstance.Status - Current state encoded as an Integer value:
      • 1 - Started
      • 2 - In Progress
      • 3 - Closed
      • 4 - Canceled
      • 5 - Faulted
    • context.ProcessInstance.IsDebugMode - Indicates if this Instance is a debug Instance (true) or not (false)

Process Context Expressions

Process Context Expressions allow Activities to access data in Variables, Start Parameters and Subscription Settings. Furthermore, Process Context Expressions can calculate new values from existing values in Variables, Start Parameters and Subscription Settings. The Process Context Expressions are executed on the Novunex Platform. The execution is done for each Instance separately, meaning that the result can be different for each Instance depending on the values of the Variables, Start Parameters and Subscription Settings of that particular Instance.

Process Context Expressions are used in the Activity config of various Activities. Every field in the Activity config that can be set by a Process Context Expressions is marked by three dots on the right end. By clicking on these three dots, you open an Expression Editor.

The Expression Editor allows you to enter a Process Context Expressions and gives you a Quick Reference on available functions and parameters.

Expression Editor

The Expression Editor allows you to enter a Process Context Expressions and gives you a Quick Reference on available functions and parameters.

Syntax and Functions

The syntax describes how to start Process Context Expressions with an equal sing, how to do basic math and logical operations and how to access data data in Variables, Start Parameters and Subscription Settings.

Start Process Context Expressions with an equal sign
Process Context Expression start with an equal sign =. This equal sign can be omitted if, and only if, the expression contains only one variable. The omission is optional, meaning that you can just start all Process Context Expression with an equal sign and it works in any case.

Literals
  • Boolean - true and false
  • Numerical:
    • 12 - Integer numbers
    • 9.87, .87, 9.87e4, 9e4, 9e+4, 9e-4, .9e-4 - Decimal numbers
  • String - String literals are enclosed in apostrophes, e.g., 'Hello String'
  • Time and Dates - The time and dates have to be entered as a String in the format 'yyyy-MM-dd hh:mm:ss' following the Microsoft date and time format strings. If you want to enter values for a different time zone, you have to use the ConvertToTimeZone(dateTime, newTimeZoneName ) to convert it.
  • JSON has to be entered as a String like '{"Name": "MyName", "Value": 4}' when the Process Context Expression starts with an equal sign. Hence, the full text in this example is ='{"Name": "MyName", "Value": 4}'. If you omit the equal sign at the start, also the apostrophes have to be omitted and the full text in this example becomes {"Name": "MyName", "Value": 4}.

Arithmetic and Logical Operators

Operators allow you to do basic calculations and evaluate logical expressions:

  • Logical Operators:
    • == - Compares for equality
    • !=, <> - Compares for inequality
    • !, not - Logical NOT
    • &&, and - Logical AND
    • ||, or - Logical OR
    • < - Smaller
    • <= - Smaller or equal
    • > - Greater
    • >= - Grater or equal
  • Mathematical Operators:
    • + - Addition
    • - - Subtraction
    • * - Multiplication
    • / - Division
    • % - Modulo, i.e., remainder of a division
  • Bitwise Operators:
    • ~ - bitwise NOT
    • & - Bitwise AND
    • | - Bitwise OR
    • ^ - Bitwise XOR
    • << - Left shift
    • >> - Right shift

The round brackets ( and ) can be used to groups and thus prioritize of expressions. The operators have the following priority, ordered by highest to lowest:

  • Primary, i.e., grouping by brackets ( and )
  • Unary - !, not, ~, and the minus - as sign in front of a number
  • Multiplicative - *, /, %
  • Additive - -, +
  • Relational - -, =, ==, !=, <>, <, <=, >, >=
  • Bitwise - &, |, ^, <<, >>
  • logical - and, &&, or, ||

If two operators of the same priority are used, then the priority is of the left one is higher than the right one.

Entity Variables and Context Variables

The values of Entity and Context Variables and their attributes are accessed by a pound sign # and their name enclosed in square brackets []:

  • #[MyEntityVariable.Attribute] - Access the value in an Attribute of an Entity Variable
  • #[MyContextVariable] - Access the value in a Context Variable with no attributes
  • #[MyContextVariable.Attribute] - Access the value in an Attribute of a Context Variable

Start Parameters

The values of Start Parameters can be read by entering a single pound sign # followed by their name in square brackets [].

  • #[MyStartParam] - Example to access the value of the MyStartParam Start Parameter.
Subscription Settings

The values of Subscription Settings can be read by entering two pound signs ## followed by their name in square brackets []. All Subscription Settings need to be managed via the Subscription Settings menu.

Global Variables

The values of Global Variables can be read by entering two pound signs ## followed by their name in square brackets []. The Global Variables are read only and cannot be written. The following Global Variables can be accessed:

  • ##[Context] - Properties of the current Context:
    • ##[Context.Process] - The Process itself
      • ##[Context.Process.Id] - ID of the Process
      • ##[Context.Process.Name] - Name of the Process
      • ##[Context.Process.Description] - Descriptive text
      • ##[Context.Process.Guid] - Globally unique identifier
      • ##[Context.Process.Category] - Name of the category this Process is assigned to
      • ##[Context.Process.Version] - Version number
      • ##[Context.Process.CanStartManually] - Indicates if this Process can be started by a User (true) or not (false)
      • ##[Context.Process.IsSingelton] - Indicates if only one Instance can be in state Running (true) or if multiple Instances can be in state Running (false)
      • ##[Context.Process.DeleteInstanceAfterClosing] - Indicates if the Instance is deleted once its finished its execution (true) or not (false). This corresponds to the Disable process history property of the Process.
      • ##[Context.Process.RunAsync] - Indicates if the Process starts in an asynchronous, non-blocking way (true) or in an synchronous and blocking way (false)
      • ##[Context.Process.IsProcessStep] - Deprecated - do not use
      • ##[Context.Process.Icon] - Font Awesome name of the icon assigned to this Process
    • ##[Context.ProcessInstance] - Current Instance
      • ##[Context.ProcessInstance.Id] - ID of the Instance
      • ##[Context.ProcessInstance.Name] - Name of the Instance
      • ##[Context.ProcessInstance.TaskDisplayInformation] - Hold the task description for the current Activity. The task description is configured in the Additional text for task list property of the Activity.
      • ##[Context.ProcessInstance.ParentProcessInstanceId] - ID of the Instance that started this Instance, or null if this Instance has no parent Instance and was started by a User.
      • ##[Context.ProcessInstance.FromParentActivityId] - ID of the Activity that started this Instance, or null if this Instance has no parent Activity.
      • ##[Context.ProcessInstance.LastOutcome] - Name of the last Outcome this Instance passed though
      • ##[Context.ProcessInstance.Status] - Current state encoded as an Integer value:
        • 1 - Started
        • 2 - In Progress
        • 3 - Closed
        • 4 - Canceled
        • 5 - Faulted
      • ##[Context.ProcessInstance.IsDebugMode] - Indicates if this Instance is a debug Instance (true) or not (false)
    • ##[Context.Activity] - Current Activity
      • ##[Context.Activity.Id] - ID of the Activity
      • ##[Context.Activity.Name] - Name of the Activity
      • ##[Context.Activity.TimeoutSeconds] - Once this time is elapsed, the Activity will be closed and the Process continued. The timeout is deactivated by setting it to zero seconds.
      • ##[Context.Activity.ContinueOnError] - If set to true, the Instance will continue even if this Activity failed. If set to false, this Instance will fail if the Activity fails.
    • ##[Context.FromActivity] - Previous Activity in the Process. If the current Activity has more than one Outcomes, the Activity connected to the first Outcome is delivered.
      • ##[Context.FromActivity.Id] - ID of the Activity
      • ##[Context.FromActivity.Name] - Name of the Activity
      • ##[Context.FromActivity.TimeoutSeconds] - Once this time is elapsed, the Activity will be closed and the Process continued. The timeout is deactivated by setting it to zero seconds.
      • ##[Context.FromActivity.ContinueOnError] - If set to true, the Instance will continue even if this Activity failed. If set to false, this Instance will fail if the Activity fails.
    • ##[Context.ToActivity] - Next Activity in the Process. If there are multiple Activities, than this expression delivers the first Activity.
      • ##[Context.ToActivity.Id] - ID of the Activity
      • ##[Context.ToActivity.Name] - Name of the Activity
      • ##[Context.ToActivity.TimeoutSeconds] - Once this time is elapsed, the Activity will be closed and the Process continued. The timeout is deactivated by setting it to zero seconds.
      • ##[Context.ToActivity.ContinueOnError] - If set to true, the Instance will continue even if this Activity failed. If set to false, this Instance will fail if the Activity fails.
    • ##[Context.NextTaskUrl] - The URL of the next task as HTML tag, i.e., the URL encapsulated in an <a href="..."> tag. ##[Context.NextTaskUrl.Url] delivers the URL directly without the HTML tag.
    • ##[Context.PreviousTaskUrl] - The URL of the previous task as HTML tag, i.e., the URL encapsulated in an <a href="..."> tag. ##[Context.PreviousTaskUrl.Url] delivers the URL directly without the HTML tag.
  • ##[CurrentUser] - The currently active User can be a User interacting with the Activities or the Novunex Platform Engine user as described here.
    • ##[CurrentUser.Id] - Unique ID of the User
    • ##[CurrentUser.UserName] - Email address representing the user name
    • ##[CurrentUser.FirstName] - First name of the User
    • ##[CurrentUser.LastName] - Last name of the User
    • ##[CurrentUser.JobTitle] - Job title of the User
    • ##[CurrentUser.Department] - Name of the department the User belongs to
    • ##[CurrentUser.Location] - The location information of the User
    • ##[CurrentUser.Division] - Deprecated - do not use
    • ##[CurrentUser.ProfileImage] - URL of the User’s profile image
    • ##[CurrentUser.IsoLanguageCode] - Language information of the User
    • ##[CurrentUser.TimeZone] - Time zone the Users works in. The time zone is specified as a TZ database name
    • ##[CurrentUser.UserGroups] - Array of all User Groups this User belongs to
      • ##[CurrentUser.UserGroups.Id] - Array of IDs identifying the User Groups this User belongs to
      • ##[CurrentUser.UserGroups.Name] - Array of names identifying the User Groups this User belongs to
  • ##[CurrentSubscription.Id] - ID of the current Subscription
  • ##[Now] - Current date and time
  • ##[Today] - Current date
Special characters

When working with Strings, you might need to escape characters or use special control characters:

  • \\ - Escape character
  • \n - Line feed
  • \r - Carriage return
  • \t - Tab

Functions

Here you find a list of all functions that you can use in Process Context Expressions.

Mathematical

Functions for arithmetical operations with Integers and Decimals:

  • Abs(number) - Absolute value of number
  • Acos(number) - Returns the angle in radiant whose cosine is number
  • Asin(number) - Returns the angle in radiant whose sine is number
  • Atan(number) - Returns the angle in radiant whose tangent is numer
  • Ceiling(number) - Smallest integer greater than or equal to number
  • Cos(number) - Cosine of number, number is expected in radiant.
  • Exp(number) - Raise e to the power of number
  • Floor(number) - Largest integer less than or equal to number
  • IEEERemainder(numberA, numberB) - Remainder of numberA over numberB
  • Log(number, base) - Logarithm in base base of number
  • Log10(number) - Base 10 logarithm of number
  • Max(numberA, numberB) - Get the larger of numberA and numberB
  • Min(numberA, numberB) - Get the smaller of numberA and numberB
  • Pow(number, power) - Raise number to power
  • Round(number, decimal) - Round number to decimal places
  • Sign(number) - Return -1, if number is negative and 1, if number is positive
  • Sin(number) - Sine of number, number is expected in radiant.
  • Sqrt(number) - Square root of number
  • Tan(number) - Tangent of number, number is expected in radiant.
  • Trunc(number) - Remove any fractional digits from decimal

Date and Time

Functions for working with date and time values:

  • AddSeconds(datetime, number) - Add seconds to datetime. You can use a negative value in seconds to make a subtraction.
  • AddMinutes(datetime, number) - Add minutes to datetime. You can use a negative value in minutes to make a subtraction.
  • AddHours(datetime, number) - Add hours to datetime. You can use a negative value in hours to make a subtraction.
  • AddDays(datetime, number) - Add days to datetime. You can use a negative value in days to make a subtraction.
  • AddBusinessDays(datetime, number) - Add the number of business days to datetime. You can use a negative value in number to make a subtraction.
  • AddMonths(datetime, number) - Add the number of months to datetime. You can use a negative value in number to make a subtraction.
  • ConvertToTimeZone(dateTime, newTimeZoneName ) - Converts dateTime from its current timezone into the timezone given as newTimeZoneName. The newTimeZoneName has to be specified as a TZ database name like America/New_York, Europe/Vienna or Asia/Tokyo.
  • GetBusinessDays(datetimeA, datetimeB) - Get the number of business days between the dates datetimeA and datetimeB
  • GetBusinessDaysOfMonth(year, month) - Get the number business days for month in year
  • Year(datetime) - Get the year of datetime
  • Month(datetime) - Get the month of datetime
  • Day(datetime) - Get the day of datetime
Type Conversion

Functions to convert between various data types:

  • Bool(string), ToBool(string) - Cast string to boolean
  • Date(string), ToDate(string) - Cast string to date
  • DateTime(string) - Cast string to date and time
  • Decimal(string), ToDecimal(string) - Cast string to decimal number
  • Int(string), ToInt(string) - Cast string to integer number
  • String(value), ToString(string) - Cast value to string
String functions

Functions to manipulate and work with strings:

  • Format(template, string) - Insert string into template on all positions where {0} is found in template.
  • IsNullOrEmpty(string) - Check if string is null or empty
  • Lower(string), ToLower(string), ToLowerCase(string) - Convert string to lower case
  • Replace(string, find, replace) - Replace all occurrences of find in string by replace.
  • Upper(string), ToUpper(string), ToUpperCase(string) - Convert string to upper case
Array functions

How to work with and manipulate Arrays:

  • Arrays in Entities Variable are automatically initialized
  • Assigning a value to an Array in a Set Activity will append the assigned value to the Array
  • Clear() - Empties an existing Array that is stored in a Variable or an Attribute of a Variable. Clear can only be used in Set Activities' Add or set variables section. Here, Key must be set to a Context Variable or an Attribute of an Variable containing an Array. The Value has to be =Clear().
  • ElementAt(array, number) - Get element at position number in array. If a number is given, that is bigger than the size of the Array, null is returned. The array positions start at zero.
  • Index(array, value), IndexOf(array, value) - Get position of a element equals value in array. If there are multiple matches, the first match is returned. If not matches are found, null is returned.
  • ReplaceList(findValue, replaceValue) - Replaces all entries matching findValue with replaceValue in an Array that is stored in a Context Variable or an Attribute of a Variable. ReplaceList can only be used in Set Activities' Add or set variables section. Here, Key must be set to a Context Variable or an Attribute of an Variable containing an Array. The Value has to be =ReplaceList(findValue, replaceValue), where findValue and replaceValue can be entered directly or can by Variables.
JSON functions

The extractions of parts of a JSON string is explained with this JSON example:

{
  "Name":"MyName",
  "Info":{
    "Another.Name": "OtherName",
    "List":[
      1,
      2
    ],
    "Object":{
      "aValue": 1,
      "aString": "first"
    },
    "ObjectArray":[
      {
        "aValue": 2,
        "aString": "second"
      },
      {
        "aValue": 3,
        "aString": "third"
      }
    ]
  }
}

Two functions are provided to extracts parts from a JSON string. Both of them use the JSONPath syntax.

  • SelectToken(jsonString, pathString) - Extracts the JSON element identified by pathString out of the jsonString. If jsonString equals the above example, the following pathString examples provide valid extraction results:

    • . or [] - Access the child of a JSON element
    • Name extracts MyName
    • Info['Another.Name'] extracts OtherName, i.e., to be used if there are periods in the JSON element’s name.
    • Info.List extract the JSON list [ 1, 2 ]
    • Info.List[0] extract 1, i.e, the first element from the list
    • Info.Object extracts the JSON object { "aValue": 1, "aString": "first" }
    • Info.Object.aString extracts first
  • SelectTokens( jsonString, jsonPath) - Extracts the JSON element or elements identified by jsonPath out of the jsonString. SelectTokens( jsonString, jsonPath) always returns an Array, but is otherwise identical to SelectToken(jsonString, pathString). jsonPath has to follow the JSONPath notation. The following notation is frequently used:

    • $ - Root of the JSON string, i.e., the highest point in the JSON hierarchy
    • . or [] - Access the child of a JSON element
    • .. - Recursive run through all elements below
    • * - Wildcard, i.e., all elements regardless of their names
    • @ - Current element
    • ?( ... ) - Filter
    • [start:end:step] - Iterates through an Array from start to end with the given step

    If jsonString equals the above example, the following jsonPath examples proved valid extraction results:

    • $..ObjectArray[?(@.aValue==2)] extract the JSON object { "aValue": 2, "aString": "second" }
    • $..ObjectArray[?(@.aString!='second')] extract the JSON object { "aValue": 3, "aString": "third" }

Be aware that when you enter the jsonString examples, you have to use the correct String literals:
Info.Object is entered as =SelectToken(#[MyVar.JsonAttribute], 'Info.Object') Info['Another.Name'] is entered as =SelectToken(#[MyVar.JsonAttribute], 'Info[\'Another.Name\']'), note the escaped inner inverted commas Info.List[0] is entered as =SelectToken(#[MyVar.JsonAttribute], 'Info.List[0]') $..ObjectArray[?(@.aString!='second')] is entered as =SelectTokens(#[MyVar.JsonAttribute], '$..ObjectArray[?(@.aString!=\'second\')]' ), note the escaped inner inverted commas

Utility functions

Additional utility functions:

  • CalculateOwner(group, func) - Selects a used from the specified user group. As group you can specify the group ID or the name of the group. func is a string, that determiners how the user is selected:
    • random - Randomly selects any user from the groups
    • fewest - Selects the user with the lowest number of open tasks
  • FindReference(entityType, attribute, value) - Get an Entity of type entityType where attribute equals value. If there are multiple matches, the first match is returned. If not matches are found, null is returned.
  • Guid() - Generate a global unique identifier
  • if( expression, trueValue, falseValue) - If expression evaluates to true, then trueValue is returned; if expression evaluates to false, then falseValue is returned.
  • in( value, option1, option2, option3 ) - Returns true, if value is equal to one of the options. You can specify as many options as you like.
  • StrongPassword(length) - Generate random password with the length given by length

SQL and SQL Queries

Some Activities allow you to use Structured Query Language (SQL) to interact query data from the Database. For example, SQL can be used to load data from the Database in the Set Activity or to select data for deletion by the Delete Activity. To use SQL in any Activity, you have to provide a validated SELECT query that can be executed by the Microsoft SQL Server hosting the database.

The usage of SQL is not strictly required in Activities, i.e., everything you can do with SQL in Activities can also be done in another way without SQL. However, the use of SQL queries can often reduce the number of required Activities in Processes.

You will only need SELECT queries. Even when you want to delete data, you select the data with a SELECT queries, and the Delete Activity will then select this data. You can use all features of the Microsoft SQL Server SELECT syntax like JOIN, ORDER BY, LIMIT, etc. The SELECT queries used in the Novunex Platform have several extensions of the Microsoft SQL Server queries:

  • Entity Type can be used as table names when putting them in square brackets like [MyEntityType].
  • Core Tables can also be used like table names when putting them in square brackets like [File]
  • Vales passed to the SQL SELECT queries as parameters start with a leading @ sign followed by an alphanumeric string., i.g., @MyParameter, @LowerBound, @SerialNumber. The Novunex Platform does not check the parameters. This means if you want to handle special cases like empty parameters, you have to write the SQL SELECT query accordingly.

Here is an example SQL SELECT query that retrieves the two Attributes FirstAttribute and SecondAttribute of the Entity Type [MyEnity] for all Entities where the Attributes ThirdAttribute equals the value of MyParameter

SELECT FirstAttribute, SecondAttribute FROM [MyEnity] WHERE ThirdAttribute = @MyParameter

The Novunex Platform provides you will the following SQL functions in addition to the functions the Microsoft SQL Server already has.

  • ConvertDateTime( userId, DateTime) - Converts a UTC DateTime into the local DateTime for the user specified by userId.

Activities

The following list contains all Activities that are available in the Process Editor.

Icon Name Description
Start The Start Activity marks the beginning of a Process. [Learn more]
End The End Activity is the final stage of each Process. [Learn more]
Junction Junctions are way points to manage the layout of connections between Activities. [Learn more]
Form Form Activities present input Forms to Users for entering, modifying, inspecting or signing data. [Learn more]
Email The Email Activity sends emails to one or more recipients. [Learn more]
Set The Set Activity is used to manipulate Entity and Context Variables. [Learn more]
Load The Load Activity loads Entities from the Database into Entity Variables. [Learn more]
Create The Create Activity creates new Entity Variables and initializes their Attributes. [Learn more]
Update The Update Activity manipulates Entities directly in the Database. [Learn more]
Delete The Delete Activity deletes Entities in the Database. [Learn more]
Clone This Activity clones Entity Variables and the underlying data in the Database. [Learn more]
Report The Report Activity executes a Data Query and converts the results into a file. [Learn more]
File The File Activity fetches one or more files via the HTTP or HTTPS protocol and stores them on the Novunex Platform. [Learn more]
Serial Number SerialNumber creates a new Serial Number and stores it in an Attribute of an Existing Variable. [Learn more]
Connect Connect Activities create and synchronously start a child Instance. [Learn more]
Condition The Condition Activity create conditional branches in Processes. [Learn more]
Loop The Loop Activity iterates though the elements in an array. [Learn more]
Execute The Execute Activity executes a script written in JavaScript. [Learn more]
Start Process Start Process asynchronously starts one or more new Instances. [Learn more]
End Process The End Process Activity terminates the execution of an Instance. [Learn more]
Merge Merges multiple files that are on the Novunex platform into one single PDF file. [Learn more]
Http Http executes a HTTPS Request to an HTTPS server and maps the results to Variables. [Learn more]
Parse The Parse Activity creates Entity Variables from the content of CSV or JSON files. [Learn more]
Administration The Administration Activity allows you to create an manipulate Users and User Groups. [Learn more]