6.6. カスタム関数
OpenShift Serverless Logic は custom 関数タイプをサポートしており、これにより実装で関数定義機能を拡張できるようになります。operation 文字列と組み合わせることで、定義済みの関数タイプのリストを使用できます。
カスタム関数型は、他のランタイム実装間で移植できない可能性があります。
6.6.1. sysout カスタム関数 リンクのコピーリンクがクリップボードにコピーされました!
以下の例のように、sysout 関数をロギングに使用できます。
sysout 関数定義の例
{
"functions": [
{
"name": "logInfo",
"type": "custom",
"operation": "sysout:INFO"
}
]
}
: の後の文字列はオプションであり、ログレベルを示すために使用されます。使用可能な値は TRACE、DEBUG、INFO、WARN、および ERROR です。値が存在しない場合は、INFO がデフォルトになります。
state 定義では、次の例に示すように、同じ sysout 関数を呼び出すことができます。
状態内の sysout 関数参照の例
{
"states": [
{
"name": "myState",
"type": "operation",
"actions": [
{
"name": "printAction",
"functionRef": {
"refName": "logInfo",
"arguments": {
"message": "\"Workflow model is \\(.)\""
}
}
}
]
}
]
}
上記の例では、message 引数は、補間を使用した jq 式または 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 サービスを起動します。これにより、HTTP リクエストの実行に使用される、Knative サービスを定義する静的 URI を取得できるようになります。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 関数を使用する場合と同じように、リクエスト引数を渡します。
次の例は、rest 関数の宣言を示しています。
{
"functions": [
{
"name": "multiplyAllByAndSum",
"type": "custom",
"operation": "rest:post:/numbers/{multiplier}/multiplyByAndSum"
}
]
}
相対エンドポイントを使用する場合は、ホストをプロパティーとして指定する必要があります。ホストプロパティーの形式は kogito.sw.functions.<function_name> .host です。この例では、kogito.sw.functions.multiplyAllByAndSum.host がホストプロパティーキーです。必要に応じて、kogito.sw.functions.multiplyAllAndSum.port プロパティーを指定して、デフォルトのポート (80) をオーバーライドできます。
このエンドポイントは、numbers フィールドが整数の配列である JSON オブジェクトを本体として受け取り、配列内の各項目を multiplier で乗算し、乗算されたすべての項目の合計を返します。