6.6. 自定义功能
OpenShift Serverless Logic 支持自定义功能类型,它允许实现扩展功能定义功能。通过与 操作 字符串结合使用,您可以使用预定义的功能类型列表。
自定义功能类型可能无法在其他运行时实现中可移植。
6.6.1. Sysout 自定义功能 复制链接链接已复制到粘贴板!
您可以使用 sysout 功能进行日志记录,如下例所示:
sysout 功能定义示例
{
"functions": [
{
"name": "logInfo",
"type": "custom",
"operation": "sysout:INFO"
}
]
}
: 后面的字符串是可选的,用于指示日志级别。可能的值有 TRACE,DEBUG,INFO,WARN, 和 ERROR。如果值不存在,则 INFO 是默认值。
在 状态 定义中,您可以调用相同的 sysout 功能,如下例所示:
状态中的 sysout 功能引用示例
{
"states": [
{
"name": "myState",
"type": "operation",
"actions": [
{
"name": "printAction",
"functionRef": {
"refName": "logInfo",
"arguments": {
"message": "\"Workflow model is \\(.)\""
}
}
}
]
}
]
}
在上例中,message 参数可以是 jq 表达式,也可以是使用 interpolation 的 jq 字符串。
6.6.2. Java 自定义功能 复制链接链接已复制到粘贴板!
OpenShift Serverless Logic 支持 Apache Maven 项目中的 java 功能,在其中定义您的工作流服务。
以下示例显示了 java 函数的声明:
java 功能声明示例
{
"functions": [
{
"name": "myFunction",
"type": "custom",
"operation": "service:java:com.acme.MyInterfaceOrClass::myMethod"
}
]
}
6.6.3. Knative 自定义功能 复制链接链接已复制到粘贴板!
OpenShift Serverless Logic 通过 knative-serving 附加组件提供自定义功能实现,以调用 Knative 服务。它允许您具有静态 URI,定义用于执行 HTTP 请求的 Knative 服务。URI 中定义的 Knative 服务在当前 Knative 集群中查询,并转换为有效的 URL。
以下示例使用部署的 Knative 服务:
$ kn service list
NAME URL LATEST AGE CONDITIONS READY REASON
custom-function-knative-service http://custom-function-knative-service.default.10.109.169.193.sslip.io custom-function-knative-service-00001 3h16m 3 OK / 3 True
您可以使用 Knative 服务名称声明 OpenShift Serverless Logic 自定义功能,如下例所示:
"functions": [
{
"name": "greet",
"type": "custom",
"operation": "knative:services.v1.serving.knative.dev/custom-function-knative-service?path=/plainJsonFunction",
}
]
此功能发送 POST 请求。如果没有指定路径,OpenShift Serverless Logic 将使用根路径(/)。您还可以通过在操作中设置 method= 请求。在这种情况下,参数通过查询字符串转发。
GET 来发送 GET
6.6.4. REST 自定义功能 复制链接链接已复制到粘贴板!
OpenShift Serverless Logic 提供 REST 自定义类型作为快捷方式。在函数定义中使用自定义 rest 时,您可以指定要调用的 HTTP URI,以及要使用的 HTTP 方法(get、post、patch 或 put)。这可以通过使用 operation 字符串来完成。调用函数时,您可以使用 OpenAPI 功能传递请求参数。
以下示例显示了其他函数 的声明 :
{
"functions": [
{
"name": "multiplyAllByAndSum",
"type": "custom",
"operation": "rest:post:/numbers/{multiplier}/multiplyByAndSum"
}
]
}
在使用相对端点时,您必须将主机指定为属性。host 属性的格式是 kogito.sw.functions.<function_name>.host。在本例中,kogito.sw.functions.multiplyAllByAndSum.host 是 host 属性键。如果需要,您可以通过指定 kogito.sw.functions.multiplyAllAndSum.port 属性来覆盖默认端口(80)。
此端点充当正文,其字段 编号为 整数数组,将阵列中的每个项目乘以 倍数,并返回所有乘以项目的总和。