跳转到主要内容

Camunda外部任务Robot Framework RCC客户端

项目描述

Camunda外部任务Robot Framework RCC客户端

技术预览。

carrot-rcc 是一个针对 Camunda外部任务 的客户端,用于执行 Robot Framework RPA框架 自动化任务。它基于 Robocorp RCC工具链用于Node JS的Camunda外部任务客户端

carrot-rcc 执行按照 Robocorp文档 指令构建并打包到 robot.zip 中的自动化任务。单个 carrot-rcc 服务可以订阅多个主题,并可以同时执行来自同一或不同 robot-packages 的任务,尽管仅在本机计算机上本地执行。 carrot-rcc 应该在 Windows、Linux 和 MacOS 上运行良好。

usage: carrot-rcc [<robots>...]
                  [--base-url] [--authorization]
                  [--worker-id] [--max-tasks] [--poll-interval]
                  [--rcc-executable] [--rcc-encoding] [--rcc-telemetry]
                  [--rcc-controller] [--rcc-fixed-spaces]
                  [--vault-addr] [--vault-token]
                  [--healthz-host] [--healthz-port]
                  [--log-level]
                  [-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: 60000]
  --log-level[=<debug|info|warn|error>]    [env: CLIENT_LOG_LEVEL] [default: info]

  --rcc-executable[=<path>]                [env: RCC_EXECUTABLE] (or RCC_EXE) [default: rcc]
  --rcc-controller[=<controller>]          [env: RCC_CONTROLLER] [default: carrot]
  --rcc-encoding[=<encoding>]              [env: RCC_ENCODING] [default: utf-8]
  --rcc-telemetry                          [env: RCC_TELEMETRY]
  --rcc-fixed-spaces                       [env: RCC_FIXED_SPACES]

  --vault-addr[=<addr>]                    [env: VAULT_ADDR] [default: http://127.0.0.1:8200]
  --vault-token[=<token>]                  [env: VAULT_TOKEN] [default: token]

  --healthz-host[=<host>]                  [env: HEALTHZ_HOST] [default: localhost]
  --healthz-port[=<port>]                  [env: HEALTHZ_PORT] (default: disabled)

  -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

When --rcc-fixed-spaces is set, concurrent tasks for the same topic may share
RCC space, possibly resulting in faster startup.

设计

carrot-rcc 启动时,它会检查每个给定的 robot-package,并从它们的 robot.yaml 中检查可用的任务名称。目前,carrot-rcc 只能找到已预加载到本地文件系统上的包。

然后 carrot-rcc 将每个找到的任务名称作为 Camunda 外部任务主题订阅,并开始监听其主题以在 Camunda 中可用的新任务。

在新的任务中,carrot-rcc会记住哪个主题被映射到哪个机器人包中的哪个任务,并将正确的机器人包解压到一个新的临时目录中。然后,它创建另一个临时目录,将所有外部任务变量和文件作为本地机器人工作项

与工作项类似,为了方便起见,所有carrot-rcc进程环境变量都作为env密钥提供,以防止它们在配合RPA框架的Secrets库使用时出现在Robot Framework日志中。

接下来,调用RCC来解决机器人的依赖关系并执行机器人。机器人包可以声明任何可用的Conda或Pip包作为其依赖项。例如,这使得即使本地机器实际上没有可用的包,也可以将完整的浏览器自动化堆栈作为任务依赖项。RCC将依赖环境缓存到机器上,以实现它们的快速重用。

最后,carrot-rcc将保存的工作项中所有更改和添加的变量保存回Camunda。此外,它还保存了完整的Robot Framework执行日志。所有这些都会保存回任务执行上下文,以便留给BPMN设计者进一步使用。最后,carrot-rcc在Camunda中完成或失败任务。

Screencast of carrot-rcc in action

用法

carrot-rcc只需要NodeJS 12或更高版本,并期望RCC在环境PATH上。也可以通过--rcc-executable参数手动配置RCC的位置。

也可以只用RCC来启动所有内容

  1. carrot-rcc创建一个目录,并将RCC下载到该目录。

  2. 下载一个定义carrot-rcc要求的conda.yaml示例。

  3. 使用以下命令将carrot-rcc安装到RCC管理的环境中

    $ rcc holotree variables conda.yaml > activate.sh
    

    $ rcc.exe holotree variables conda.yaml > activate.bat
    
  4. 并激活该环境

    $ source activate.sh
    

    $ .\activate.bat
    

完成。现在carrot-rcc应该可以运行了,例如

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

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

项目仓库包括示例Camunda流程和与RCC兼容的机器人(示例12)。

失败时重试

可以通过定义retries(数字)和retryTimeout以及retryTimeoutMax(可选,以毫秒为单位)来定义失败时的自动重试。当retryTimeoutMax定义的值大于retryTimeout时,超时将在重试之间逐渐增加。

tasks:

  Camunda Topic:
    robotTaskName:
      My Robot Task
    retries: 10
    retryTimeout: 60000
    retryTimeoutMax: 3600000

支持Vault

carrot-rccHashiCorp Vault KV secrets engine有一些支持。当设置VAULT_ADDRVAULT_TOKEN时,carrot_rcc会在每次机器人执行之前解决每个机器人robot.yaml中定义的密钥。

带有密钥的示例robot.yaml

tasks:

  Camunda Topic:
    robotTaskName:
      My Robot Task

vault:
  my-secret: /secret-engine-path/data/my-secret-path

condaConfigFile:
  conda.yaml

artifactsDir:
  output

注意:carrot-rcc不会管理给定的VAULT_TOKEN的续订。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源代码分发

此版本没有可用的源代码分发文件。请参阅生成分发存档的教程。

构建的分发

carrot_rcc-0.8.3-py3-none-any.whl (273.2 kB 查看哈希值)

上传时间 Python 3

由以下支持