Skip to main content

Camunda external task Robot Framework RCC client

Project description

Camunda external task Robot Framework RCC client

Technology preview.

carrot-rcc is an opinionated Camunda external task client for executing Robot Framework RPA framework automation tasks. It is based on Robocorp RCC toolchain and Camunda external task client for Node JS.

carrot-rcc executes automation tasks built and wrapped into robot.zip packages as instructed by Robocorp documentation. Single carrot-rcc service can subscribe multiple topics and execute tasks from same or different robot-packages concurrently, although only locally on the same computer. carrot-rcc should work fine on Windows, Linux and on MacOS.

usage: carrot-rcc [<robots>...]
                  [--base-url] [--authorization]
                  [--worker-id] [--max-tasks] [--poll-interval] [--log-level]
                  [--rcc-executable] [--rcc-encoding] [--rcc-telemetry]
                  [-h] [--help]

<robots> could also be passed as a comma separated env RCC_ROBOTS

options:

  --base-url[=<url>]                       [env: CAMUNDA_API_BASE_URL] [default: http://localhost:8080/engine-rest]
  --authorization[=<header>]               [env: CAMUNDA_API_AUTHORIZATION] [example: Basic ZGVtbzpkZW1v]

  --worker-id[=<string>]                   [env: CLIENT_WORKER_ID] [default: carrot-rcc]
  --max-tasks[=<cpus>]                     [env: CLIENT_MAX_TASKS] [default: [cpu count]]
  --poll-interval[=<milliseconds>]         [env: CLIENT_POLL_INTERVAL] [default: 10000]
  --log-level[=<debug|info|warn|error>]    [env: CLIENT_LOG_LEVEL] [default: info]

  --rcc-executable[=<path>]                [env: RCC_EXECUTABLE] [default: rcc]
  --rcc-encoding[=<encoding>]              [env: RCC_ENCODING] [default: utf-8]
  --rcc-telemetry                          [env: RCC_TELEMETRY] (default: do not track)

  -h, --help

examples:

  $ carrot-rcc robot1.zip

  $ carrot-rcc robot1.zip robot2.zip --log-level=debug

  $ RCC_ROBOTS="robot1.zip,robot2.zip" LOG_LEVEL="debug" carrot-rcc

  $ CAMUNDA_API_AUTHORIZATION="Bearer MY_TOKEN" carrot-rcc robot1.zip

Design

When carrot-rcc is started, it examines every given robot-package and examines available task names from their robot.yaml. Currently, carrot-rcc can only find packages preloaded onto local filesystem.

Then carrot-rcc subscribes every found task name as they were Camunda external task topics, and starts listening for new tasks for its topics to become available at Camunda.

On a new task, carrot-rcc remembers which topic was mapped to which task on which robot-package, and unpacks the correct robot-package into a new temporary directory. Then it creates another temporary directory with all external task variables and files as a local robot work item.

Similarly to work item, for convenience, all carrot-rcc process environment variables are made available as env secret to keep their use out of Robot Framework logs when used with RPA framework's Secrets -library.

Next RCC is called to resolve robot's dependencies and execute the robot. Robot package may declare any available Conda or Pip package as its dependency. For example, this makes it possible to have fully functional browser automation stack as a task dependency independently what the local machine actually has available. RCC caches the dependency environments on the machine to enable their fast re-use.

Finally, carrot-rcc saves all the changed and added variables from the saved work item back to Camunda. In addition, it also saves full Robot Framework execution logs. All these are saved back into the task execution context, to leave their further use for the BPMN designer. At the end carrot-rcc either completes of fails the task at Camunda.

Screencast of carrot-rcc in action

Usage

carrot-rcc requires only NodeJS 12 or later and expects RCC to be on the environment PATH. RCC location may also be configured manually with --rcc-executable argument.

It is also possible to bootstrap everything with just using RCC:

  1. Create a directory for carrot-rcc and download RCC into that directory.

  2. Download an example conda.yaml defining the requirements for carrot-rcc.

  3. Install carrot-rcc into RCC managed environment with

    $ rcc env new conda.yaml
    

    or

    $ rcc.exe env new conda.yaml
    
  4. The hard part is to figure out from the logs where RCC did create the environment. When found, copy a few files back and forth to give you access the environment and carrot-rcc, and give carrot-rcc access to RCC:

    $ cp /home/user/.robocorp/live/850002f365eee60f/rcc_activate.sh .
    $ cp rcc /home/user/.robocorp/live/850002f365eee60f/bin
    

    or

    $ copy C:\Users\User\AppData\Local\robocorp\live\850002f365eee60f\rcc_activate.cmd .
    $ copy C:\Users\User\AppData\Local\robocorp\live\850002f365eee60f\Scripts\carrot-rcc.exe .
    $ copy rcc.exe C:\Users\User\AppData\Local\robocorp\live\850002f365eee60f
    
  5. Finally, activate the environment:

    $ source rcc_activate.sh
    

    or

    $ rcc_activate.cmd
    

Done. Now carrot-rcc should be ready to be run, for example:

$ carrot-rcc robot.zip --base-url=http://localhost:8080/engine-rest --log-level=debug

or

$ carrot-rcc.exe robot.zip --base-url=http://192.168.86.156:8080/engine-rest --log-level=debug

The project's repository includes example Camunda processes with example RCC compatible robots (1, 2) available.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

carrot-rcc-0.4.1.tar.gz (265.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

carrot_rcc-0.4.1-py3-none-any.whl (265.0 kB view details)

Uploaded Python 3

File details

Details for the file carrot-rcc-0.4.1.tar.gz.

File metadata

  • Download URL: carrot-rcc-0.4.1.tar.gz
  • Upload date:
  • Size: 265.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.5 CPython/3.8.9 Linux/5.4.112

File hashes

Hashes for carrot-rcc-0.4.1.tar.gz
Algorithm Hash digest
SHA256 1eaac8de44c64c9d20854ecc2621071df39c015310599d03bdd51f16bf63759a
MD5 286900bf7a3084f2367e9cfb8102047c
BLAKE2b-256 937d76f8e3f2b2e77da0e5c2eb75efb1818c725e7a0e0645ae67457f8d3f839a

See more details on using hashes here.

File details

Details for the file carrot_rcc-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: carrot_rcc-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 265.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.5 CPython/3.8.9 Linux/5.4.112

File hashes

Hashes for carrot_rcc-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d52e41601e40f86131b04ad81ae57313fbf5433f73028a93c565513b29774808
MD5 cc2a855073a2d614be70aa533c9c0dd3
BLAKE2b-256 fc16c6986bbcb04a125e881502f4dd700da23ca5e8baff7c061f9e0511cddb78

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page