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中完成或失败任务。
用法
carrot-rcc
只需要NodeJS 12或更高版本,并期望RCC在环境PATH上。也可以通过--rcc-executable
参数手动配置RCC的位置。
也可以只用RCC来启动所有内容
-
为
carrot-rcc
创建一个目录,并将RCC下载到该目录。 -
下载一个定义
carrot-rcc
要求的conda.yaml示例。 -
使用以下命令将
carrot-rcc
安装到RCC管理的环境中$ rcc holotree variables conda.yaml > activate.sh
或
$ rcc.exe holotree variables conda.yaml > activate.bat
-
并激活该环境
$ 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兼容的机器人(示例,1,2)。
失败时重试
可以通过定义retries
(数字)和retryTimeout
以及retryTimeoutMax
(可选,以毫秒为单位)来定义失败时的自动重试。当retryTimeoutMax
定义的值大于retryTimeout
时,超时将在重试之间逐渐增加。
tasks:
Camunda Topic:
robotTaskName:
My Robot Task
retries: 10
retryTimeout: 60000
retryTimeoutMax: 3600000
支持Vault
carrot-rcc
对HashiCorp Vault KV secrets engine有一些支持。当设置VAULT_ADDR
和VAULT_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
的续订。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。