A library for interacting with RPA work items.

Work items are used for managing data that go through multiple activities and tasks inside a process. Each execution of an activity receives a work item from the previous activity, and after the activity is finished, it is forwarded to the next one. During the execution, it can freely read and update the data contained in an item.

The default implementation uses Robocloud to store the data, but the library allows using custom adapters.

Default environment

The library automatically loads the work item defined by its runtime environment if the argument load_env is truthy (enabled by default). This functionality is controlled by the following environment variables:

  • RC_WORKSPACE_ID: The ID for the Robocloud workspace
  • RC_WORKITEM_ID: The ID for the Robocloud work item

These values are dynamic and should be set by Robocloud, but can be overriden manually while developing an activity.

Item structure

A work item's data payload is JSON and allows storing anything that is serializable. This library creates an object with the key 'variables' that contains key-value pairs of a variable name and its contents. These variables can be exposed to the Robot Framework task to be used directly.

In addition to the data section, a work item can also contain files, which are stored by default in Robocorp's cloud. Adding and using files with work items requires no additional setup from the user.

Workflow

While a work item is loaded automatically when a suite starts, changes are not automatically reflected back to the source. The work item will be modified locally and then saved when the corresponding keyword is explicitly called. It is recommended to defer all saves to the end of the task to prevent leaving work items in a half-modified state after failures.

Custom adapters

While Robocloud is the default implementation, it can also be replaced with a custom adapter. The selection is based on either the default_adapter argument for the library, or the RPA_WORKITEMS_ADAPTER environment variable. A custom implementation should inherit from the BaseAdapter class. The library has a built-in alternative adapter called FileAdapter for storing work items to disk.

Examples

Robot Framework

In the following example the work item is modified locally and then saved back to Robocloud. Also note how the work item is loaded implicitly when the suite starts.

*** Settings ***
Library    RPA.Robocloud.Items

*** Tasks ***
Save variables to Robocloud
    Add work item file    orders.xlsx
    Set work item variables    user=Dude    mail=address@company.com
    Save work item

Later in the process inside a different robot, we can use previously saved work item variables and files. The library also allows injecting the variables directly into the current task execution.

*** Settings ***
Library    RPA.Robocloud.Items

*** Tasks ***
Use variables from Robocloud
    Set task variables from work item
    Log    Variables are now available: ${user}, ${mail}
    ${path}=    Get work item file    orders.xlsx
    Log    Files are also stored to disk: ${path}

Python

The library can also be used through Python, but it does not implicitly load the work item for the current execution.

import logging
from RPA.Robocloud.Items import Items

def list_variables(item_id):
    library = Items()
    library.load_work_item_from_environment()

    for variable, value in library.get_work_item_variables().items():
        logging.info("%s = %s", variable, value)