6.6. カスタム関数
OpenShift Serverless Logic は custom
関数タイプをサポートしており、これにより実装で関数定義機能を拡張できるようになります。operation
文字列と組み合わせることで、定義済みの関数タイプのリストを使用できます。
カスタム関数型は、他のランタイム実装間で移植できない可能性があります。
6.6.1. sysout カスタム関数 リンクのコピーリンクがクリップボードにコピーされました!
以下の例のように、sysout
関数をロギングに使用できます。
sysout
関数定義の例
:
の後の文字列はオプションであり、ログレベルを示すために使用されます。使用可能な値は TRACE
、DEBUG
、INFO
、WARN
、および ERROR
です。値が存在しない場合は、INFO
がデフォルトになります。
state
定義では、次の例に示すように、同じ sysout
関数を呼び出すことができます。
状態内の sysout
関数参照の例
上記の例では、message
引数は、補間を使用した jq 式または jq 文字列にすることができます。
6.6.2. Java カスタム関数 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless Logic は、ワークフローサービスを定義する Apache Maven プロジェクト内の Java
関数をサポートします。
次の例は、Java
関数の宣言を示しています。
Java
関数宣言の例
6.6.3. Knative カスタム関数 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless Logic は knative-serving
アドオンを通じてカスタム関数の実装を提供し、Knative サービスを起動します。これにより、HTTP リクエストの実行に使用される、Knative サービスを定義する静的 URI を取得できるようになります。URI で定義された Knative サービスは、現在の Knative クラスターでクエリーされ、有効な URL に変換されます。
次の例では、デプロイされた Knative サービスを使用します。
kn service list
$ 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 カスタム関数を宣言できます。
この関数は 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
関数の宣言を示しています。
相対エンドポイントを使用する場合は、ホストをプロパティーとして指定する必要があります。ホストプロパティーの形式は kogito.sw.functions.<function_name>
.host です。この例では、kogito.sw.functions.multiplyAllByAndSum.host
がホストプロパティーキーです。必要に応じて、kogito.sw.functions.multiplyAllAndSum.port
プロパティーを指定して、デフォルトのポート (80) を上書きできます。
このエンドポイントは、numbers
フィールドが整数の配列である JSON オブジェクトを本体として受け取り、配列内の各項目を multiplier
で乗算し、乗算されたすべての項目の合計を返します。