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", 1 "type": "custom", 2 "operation": "service:java:com.acme.MyInterfaceOrClass::myMethod" 3 } ] }
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", 1 "type": "custom", 2 "operation": "knative:services.v1.serving.knative.dev/custom-function-knative-service?path=/plainJsonFunction", 3 } ]
此功能发送 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", 1 "type": "custom", 2 "operation": "rest:post:/numbers/{multiplier}/multiplyByAndSum" 3 } ] }
在使用相对端点时,您必须将主机指定为属性。host 属性的格式是 kogito.sw.functions.<function_name>
.host。在本例中,kogito.sw.functions.multiplyAllByAndSum.host
是 host 属性键。如果需要,您可以通过指定 kogito.sw.functions.multiplyAllAndSum.port
属性来覆盖默认端口(80)。
此端点充当正文,其字段 编号为
整数数组,将阵列中的每个项目乘以 倍数
,并返回所有乘以项目的总和。