- 07 Jul 2022
- 13 Minutes to read
- Print
- DarkLight
About Assignments
- Updated on 07 Jul 2022
- 13 Minutes to read
- Print
- DarkLight
Overview
Assignments are Tasks that allow Flows to wait in a permanently paused state until acted upon by a direct user interaction or an external system. A user might use an Assignment to:
- Assign a travel form to a manager for approval.
- Set a time frame for a certain task to be completed.
- Require that a particular form is approved by multiple people before being accepted.
There are two Assignment types called InSession and Assigned.
InSession Assignment Type
The InSession Assignment Type is typically used as a submission or data entry Form. Examples of processes that use these Forms are:
- Purchase Request Submission
- Time off Request Submission
- Customer Account Creation
An InSession Form is:
- Not saved to the database
- Only active during the user session
- Process ends if the user closes out the Form
Assign Assignment Type
This Assignment type is typically used for processes that contain approvals. Examples of these process would be:
- Invoice Routing
- Loan Approval
- Purchase Requests
- Support Ticket Queue
An Assigned Assignment Type is:
- Saved to the Database
- Task remains active until its worked
- Process does not end if user closes the Task
Assignments persist indefinitely until the expected interaction occurs. Task data is not erased even after a server restart, and will always be accessible. Task cannot be exported from one environment to another. Tasks take a snapshot of the current Flows and steps, so when they move to a new environment without those steps, they are left in an errored state.
Interacting With Assignments
Designer's Perspective
When viewing the Assignment Setup for the Add task step, users can configure the Start, Warn, and/or Late date for the Assignment. This determines when the Assignment will automatically be Assigned (Start), when it will be escalated (Warn), and when it will be considered overdue (Late).
Users can also configure the Entity name and the action name. The Task can be Assigned to a specific individual or group Assignees, which can be declared statically or dynamically from the Flow data. Those settings can also be found by clicking on Assignment Setup.
Assignment Setup
Within the 'Assignment Setup' menu there are many options on how to configure Assignments.
Setting Name | Purpose |
Accounts and Groups | Assigned the Task to a group or individual account. |
Assignment Roles | Assignment Roles can be used to process Task routing. |
Exclude Accounts Groups | Excludes Accounts or Groups based on the selection. |
Assignment Folder Type | To select the default location where the Task will be stored. |
Assignment Dates | Configurable dates that will change the Task state. |
Assignments Events | Assignment state Flows that will be triggered. |
Assignment Reuse | Options that allow the Task be reused. |
Completed Form | This completed view will cause Forms to appear within Process Folders of either the Case Entity or the Flow Execution Extension. |
Additional Assignment Action | This setting creates new action definition for Email response handling. |
Assignment States
Unlike other Entities, Assignment states are reserved and cannot be set using normal methods (i.e set state, set entity state). When an Assignment moves to a new state, it can trigger specific behaviors to run by configuring the Flows for the Assignment Settings
The Assignment States are:
- Pending
- Current
- Warn
- Late
- Escalate
- Expired
The Expired state has an outcome path that exits the step in the Flow.
Specifying Assignees
Parallel approvals is a capability that allows users to send the same independent Tasks to two different users. The Flow Designer will wait until both users have completed the Task before proceeding to the next step in the Flow. Users must use the Merge and Branch steps in the Flow Designer to create a process that will wait until everyone completes their own Task.
Assigning a Task to an entire group does not replicate this effect, as it just assigns a single Task for the entire group. If one person in that group completes the Task, then it is completed for everyone else as well.
Global Assignment Settings
Another place to configure Tasks is Global Assignment settings. They are the settings object that is found in the System > Settings. These settings contain sliders to configure the Assignment initial and action lease times. Both of these controls are there to prevent two users from working the exact same Task. Whenever a Task gets assigned to a user, that assignee will get a notification in the form of a pop-up or email.
These notifications can also be adapted globally in the Notification Types Folder found in System > Administration > Notification > Notification Types. Designers can disable or design their own custom notification Flow to send to a user upon Task creation. Task notifications don't have to be globally changed. They can also be changed on a per Assignment basis. To change the notification settings on individual Tasks, they are found in the Flow Designer on the Add Task step. In the step properties, the email category contains the notifications settings that can be customized via Email Templates. Email Templates can also be applied globally to assist in making all Task email notifications reflect company branding.
Extending Assignments
Assignments can also have their capabilities extended by utilizing one of the stateful Data Structures which are Flow Execution Extensions and Case Entities. Both of these Data Structures would be a good fit for storing them within the Data Structures' created Folders. Since they are process tracked, users can report on the Data Structure and filter by a state to find the Assignment. In both Data Structures, there is a process view page which shows the current state of the Folder and the active Task within that state.
Combining a Process Folder and a Task allows for users to configure personal work queues. An employee logs into the Portal to see all their tasks Assigned to them, and a manager can see their own queue. Both Process Folders and Tasks used in tandem can separate different Tasks so that only the user who has been assigned to those Folders can have access to it.
Completing Assignments
An Assignment becomes completed when a user fills out the Form and clicks on its outcome path. Assignments can be worked via:
- The Portal
- API
- Auto Expiration or Completion
If the Tasks are worked within the Portal, a user needs to navigate to their inbox and click on the Assignment to open the Form. Then a user fills out the required fields and completes the Form. The Assignment will then no longer be visible in the user's inbox.
If a user worked a Task through Email, they can click an Assignment that will take the user to the Assignment or record their response to complete the Form. Another way users can work Assignments via email is by sending an email reply. Based on that reply, Decisions will record the user's response and set the Assignment to be completed.
Completing a Task through the API is also possible. To configure this, users should navigate to the Assignment Service located in the System > Administration > Features > All Services to use the Task's API endpoint for a response.
The fourth way is through auto completion. Auto completion utilizes a Flow called the Auto Complete Flow. The Auto Complete Flow is user configurable and executes any logic configured in that Flow at the expiration of a user specified time frame.
Reporting on Assignments
Assignments can be reported on. Decisions empowers users with multiple default Assignment data sources to use in constructing reports of Assignments. The Inbox is just a Report Viewer that is being sourced by the Assignment data source. This data source has many filters that can be used to manipulate all Tasks contained within a Decisions environment. Specifically, they can limit the report viewer to show only certain Assignments. These capabilities include ones that filter Assignments that are active, assigned to a particular user, or a particular group. Reporting on Tasks is the feature that ultimately gives the Designers the power to replace the default Inbox.
- How to create a Report "Creating Reports"
- How to create a Page/Dashboard "Create Your First Page/Dashboard"
End User Perspective
Decisions gives users a Task list for all Assignments in the Inbox. The Inbox is the default location where Tasks will be displayed. Another way a user can work a Task is via an Assignment link in an email. This allows users or Guest Accounts to work the Task while restricting their access to other parts of the product. Another avenue for working an Task is making them actionable within the email. This allows users to work the Assignment in the email without needing to log into the Portal. Their response will be recorded and the Flow will continue to the next step of the process.
Assignment Database Tables
Assignments are complex. In order to maintain all the user's Assignment data, there are a series of database tables that store the information. There are a total of 4 tables that comprise Assignment Data. They are the 'entity_assignment', 'flow_state_storage', 'assignment_handler_data' and 'flow_data_delta_storage' tables. Here is how all four tables relate.
entity_assignment
The entity_assignment table holds most of the user configured data, like the assignment name or escalation configurations. Whenever a user makes a change in the Assignment Settings in the Flow Designer, it gets recorded in this table. When the Flow needs to start after the Assignment has been completed, the information in this table will be used to start the Flow from where it left off.
Database Table Details
entity_assignment | |
assignment_id | This is the primary key field of the database table |
warn_date | A user configured date that will run the user configured warn date flow send a notification to the assignee when this date is reached |
late_date | A user configured date that will run the user configured late date Flow |
escalate_date | A user configured date that will send the assignment to a different assignee when this date is reached |
start_date | A user configured date when the assignment set to the current state |
priority | A user configured String field that is configured through the assignment settings in the Flow Designer |
handler_data | Serialized Data about the Handler like the Form Assignment Handler or Custom Handler |
escalation_handler_wrap_data | Serialized data about how escalations should be handled |
notes | notes |
valid_only_in_folder_state | For conditional actions where they can be assigned when the folder is in the right state |
completed | A Boolean value that is set to true once the assignee works the task |
is_assigned | A Boolean value that is set to true if the assignment has an assignee |
is_current | A Boolean value set to true if the assignment is active but not completed |
hidden | The property that controls whether the assignment can be visible or invisible |
administrator_view_only | A Boolean value set to true if the assignment is admin view only |
entity_folder_id | The Id of the folder where the Assignment is stored |
entity_name | Is the name of the Assignment that will be displayed in a user's Inbox |
entity_description | A String field for writing a description about the Assignment |
created_on_date | The date the Assignment was created |
modified_date | The date that the Assignment was modified |
state | This field indicates the condition the Assignment is in |
archived | A Boolean used to indicate if the Assignment has been archived |
archived_date | The date the Assignment will be archived and permanently deleted |
all_assignments | Stores details of all the Users/Groups that have this assignment |
deleted | A Boolean value set to true if the Assignment is deleted |
assignment_handler_id | Id of the Assignment Handler |
assignment_handler_id_type | Stores an Id of the Handler type |
state_changed_date | The date the Assignment state was changed |
next_check_time | The time when the scheduled job will check the assignment for any changes |
next_check_type | What type of check is done i.e. Current, Warn, Late, Expired, or Escalated |
next_check_id | Id of the Check |
show_at_login | A Boolean value that if true will show the assignment at the users login |
assignment_type | Stores the Form Assignment Type value |
has_state_changed | A Boolean value that indicates if an Assignment state has changed |
assignment_start_flow_id | The id of the Assignment Start Flow that a user can configure in the Assignment settings in the Flow Designer |
assignment_warn_flow_id | The id of the Assignment Warn Flow that a user can configure in the Assignment settings in the Flow Designer |
assignment_late_flow_id | The id of the Assignment Late Flow that a user can configure in the Assignment settings in the Flow Designer |
assignment_escalte_flow_id | The id of the Escalate Late Flow that a user can configure in the Assignment settings in the Flow Designer |
flow_tracking_id | Foreign Key from the flow_state_storage_data |
step_tracking_id | Id of the step that created the Assignment |
primary_flow_id | The Id of the primary Flow |
primary_flow_name | Name of the default base Flow |
flow_id | The Id of the current Flow |
flow_name | Name of the parent Flow |
step_id | Foreign Key from the flow_data_delta_storage |
step_name | Name of the step that created the Assignment |
assignment_interaction_started | Time stamp of the interaction time |
assignment_started | A Boolean value indicating if the assignment is current |
completed_date_time | The date the Assignment was completed |
completed_result | Is the Assignment Forms outcome path |
completed_by | Records the user who completed the Assignment |
completed_notes | A String field used for storing notes about a completed Assignment |
url_tokens | URL token for the Assignment URL |
notification_subject | The Assignment notification String subject that will display when the Assignment gets created |
notification_message | The Assignment notification String message that will display when the Assignment gets created |
do_not_send_default_notification | Boolean value that if set to true would cause default notification to not trigger |
assignment_time_in_seconds | The amount of time the Assignment has been active |
assignment_interaction_time_in_seconds | The user interaction time with the Assignment |
reference_id | The user provided Id that stored when an assignment is configured |
history_folder_id | A common field created for Decisions Entities stores version history |
all_tags_data | Stores all tags that have been attached to the assignment |
deleted_by | Records the user who deleted the Assignment |
deleted_on | Records the date the Assignment was deleted |
extension_id | The Id of the extension object that is tied to the assignment |
extension_id_type | Stores the extension type |
folder_state | The state the folder is currently in |
flow_state_storage_data
This database table is responsible for storing the Flow data. The stored information in the table is the Flow header data. When a Flow comes to a task step, Decisions will take a snapshot of that Flow and then stores a record in the flow_state_storage_data. This table is responsible for allowing Decisions to pause the Flow until some action has occurred. Once the expected action in received, the Flow will continue to the next step in the process.
Database Table Details
flow_state_storage_data | |
flow_tracking_id | The Primary Key field of the table |
archived | A Boolean indicating if the Flow has been set to an archived status |
archived_by | The user who set the archived status |
deleted | A Boolean indicating if the Flow has been set to an deleted status |
deleted_by | The user who set the deleted status |
ended_in_exception | A Boolean indicating if the Flow encountered an exception |
exception_details | The log error message details |
primary_flow_name | Stores the name of the primary Flow |
primary_flow_id | The Id of the primary Flow |
primary_flow_name | Name of the default base Flow |
current_flow_id | Id of the running flow |
current_step_name | Name of the current step |
current_step_id | Id of the current step |
current_tracking_id | Stores the current Flow Tracking Id |
current_step_tracking_id | Stores the current step tracking ID |
percent_completed | Flow completion percentage |
start_date | The date when the Flow was started |
last_update_date | The date when the Flow was last edited |
last_update_by | The user who last edited the flow |
created_on_date | The date when the Flow was created |
created_by | The user who created the Flow |
flow_date_storage | Foreign Key of the flow_data_delta_storage table |
auto_restore_result_data | Stores the Result Data that needs to be sent for the Auto Restart of the step |
auto_restart | A Boolean value that indicates if a Flow is set to auto restart |
auto_restart_date_time | Date when the Flow was auto restarted |
auto_restart_failed | A Boolean value that indicates if a Flow failed to auto restart |
store_generation | Number used to determine if the stored Flow Data is up-to-date |
completed | A Boolean indicating if the Flow completed |
completed_date_time | The date when the Flow completed |
completed_by | The user who completed the Flow |
last_active_server | Server on which the Flow Data was used |
last_active_date_time | The last recorded data time the Flow Data was used |
archived_date | The date when the Flow will be set to an archived status |
deleted_on | The date when the Flow was deleted |
entity_folder_id | Id of the Designer Folder that stores the Flow |
state | The current state of the Flow |
auto_expire_on | A Boolean value that indicates if the Flow is set to expire |
assignment_handler_data
This table that stores data of the Assignments escalation, form, and handler data for custom Form Assignments.
Database Table Details
assignment_handler_data | |
Id | This is the primary key of the table |
handler_data | Serialized Flow handler data |
escalation_handler_data | Serialized data about handling escalations |
form_view_data | stores the serialized data for the completed form |
flow_data_delta_storage
The primary purpose of this table is to store the differential data instead of the complete Flow data to minimize storage needs.
Database Table Details
flow_data_delta_storage | |
primary_flow_tracking_id | The Main Flow tracking Id |
delta_data | Serialized Delta Data from the Flow |
delta_time_stamp | Date Time of when the Delta Data was capture |
current_flow_id | Current Flow Id |
current_step_id | Current Step Id |
current_flow_name | Current Flow Name |
current_step_name | Current Step Name |
current_step_tracking_id | Tracking Id of the current step |
current_flow_tracking_id | Tracking Id of the current Flow |
is_tracking_data | Boolean used to track if the data is complete or partial data |