processmaker/docker-executor-lua

ProcessMaker 4 的 Lua 脚本执行器

1.0.1 2023-12-15 22:19 UTC

README

带有 LUA 运行的脚本任务执行引擎

此 Docker 镜像提供了一个隔离的保护环境来运行 ProcessMaker 4 中编写的自定义 LUA 脚本。用户创建的脚本任务应该是隔离的,但应该提供一些工具来执行最常见的任务。此 LUA 环境提供了模块,脚本任务可以利用以下库:

  • dkjson
  • TODO : 确定现有脚本任务中最常用的库

如何使用

执行需要主机系统上存在 data.json、config.json 和 output.json 文件。data.json 表示请求实例数据。config.json 表示针对此脚本任务的特定配置。output.json 应该是一个空白文件,它将由脚本任务的成功输出填充。调用者负责在通过命令行(或 Docker API)执行引擎之前准备这些文件。脚本任务由 script.lua 文件表示。调用者负责在通过命令行(或 Docker API)执行引擎之前准备这些文件。

脚本任务设计

编写脚本任务时,有三个全局变量可用。它们是

  • data - 一个记录,表示从 data.json 加载的数据
  • config - 一个记录,表示从 config.json 加载的配置
  • client - 预先配置的 ProcessMaker 4 LUA SDK 客户端,通过 OAuth 身份验证访问 API

您的脚本应快速执行。一旦脚本完成,您的返回语句将被使用并转换为 JSON,然后存储在 output.json 文件中。一旦 Docker 执行完成,您应该检查 Docker 执行的返回代码。如果代码为 0,则脚本任务执行成功,您可以从 output.json 读取有效的输出。如果它是非零的,那么您应该检查 STDERR 以查看执行期间显示的错误。

示例 data.json

{
  "message": "Hello World"
}

示例脚本任务

-- Sample function to see if we can call it
function reverse (str)
  return str.reverse(str)
end

-- Convert our message inside our imported data and return it
data.message = reverse(data.message)

return data

示例 output.json

{"message":"dlroW olleH"}

使用 PM4 SDK

执行器已预配置 ProcessMaker 4 SDK,即可使用。

通过调用 client.make('name') 获取实例。

以下是一个获取所有 pm4 用户的示例

users_api = client.make('users_api')

filter=''
order_by='id'
order_direction='asc'
per_page='10'
include=''
local users, ret2, ret3 = users_api:get_users(filter, order_by, order_direction, per_page, include)

return {users=users}

有关更多信息,请参阅 ProcessMaker 4 实例上的 /api/documentation 上的 ProcessMaker API 文档

命令行使用

$ docker run -v <path to local data.json>:/opt/executor/data.json \
  -v <path to local config.json>:/opt/executor/config.json \
  -v <path to local script.lua>:/opt/executor/script.lua \
  -v <path to local output.json>:/opt/executor/output.json \
  processmaker/executor:lua \
  php /opt/executor/bootstrap.lua

许可证

根据AGPL 版本 3分发

ProcessMaker (C) 2002 - 2021 ProcessMaker Inc.

有关更多信息,请访问:http://www.processmaker.com/