検索

6.6. カスタム関数

download PDF

OpenShift Serverless Logic は custom 関数タイプをサポートしており、これにより実装で関数定義機能を拡張できるようになります。operation 文字列と組み合わせることで、定義済みの関数タイプのリストを使用できます。

注記

カスタム関数型は、他のランタイム実装間で移植できない可能性があります。

6.6.1. sysout カスタム関数

以下の例のように、sysout 関数をロギングに使用できます。

sysout 関数定義の例

{
  "functions": [
    {
      "name": "logInfo",
      "type": "custom",
      "operation": "sysout:INFO"
    }
  ]
}

: の後の文字列はオプションであり、ログレベルを示すために使用されます。使用可能な値は TRACEDEBUGINFOWARN、および 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", 1
      "type": "custom", 2
      "operation": "service:java:com.acme.MyInterfaceOrClass::myMethod" 3
    }
  ]
}

1
myFunction は関数名です。
2
custom は関数タイプです。
3
service:java:com.acme.MyInterfaceOrClass::myMethod はカスタム演算定義です。カスタム演算定義では、service は予約済みの演算キーワードであり、その後に java キーワードが続きます。com.acme.MyInterfaceOrClass は、インターフェイスまたは実装クラスの FQCN (完全修飾クラス名) であり、その後にメソッド名 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", 1
      "type": "custom", 2
      "operation": "knative:services.v1.serving.knative.dev/custom-function-knative-service?path=/plainJsonFunction", 3
    }
  ]
1
greet は関数名です。
2
custom は関数タイプです。
3
operation では、Knative サービスの座標を設定します。
注記

この関数は 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", 1
      "type": "custom", 2
      "operation": "rest:post:/numbers/{multiplier}/multiplyByAndSum" 3
    }
  ]
}
1
multiplyAllAndSum は関数名です。
2
custom は関数タイプです。
3
rest:post:/numbers/{multiplier}/multiplyByAndSum はカスタム演算定義です。カスタム演算定義では、rest はこれが REST 呼び出しであることを示す予約済みの演算キーワード、post は HTTP メソッド、/numbers/{multiplier}/multiplyByAndSum は相対エンドポイントです。

相対エンドポイントを使用する場合は、ホストをプロパティーとして指定する必要があります。ホストプロパティーの形式は kogito.sw.functions.<function_name> .host です。この例では、kogito.sw.functions.multiplyAllByAndSum.host がホストプロパティーキーです。必要に応じて、kogito.sw.functions.multiplyAllAndSum.port プロパティーを指定して、デフォルトのポート (80) を上書きできます。

このエンドポイントは、numbers フィールドが整数の配列である JSON オブジェクトを本体として受け取り、配列内の各項目を multiplier で乗算し、乗算されたすべての項目の合計を返します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.