注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
このガイドは、Python 関数をすでに作成して公開していることを前提としています。チュートリアルについては、Python 関数のはじめにのドキュメントを参照してください。Python SDK を使用してオントロジーをクエリする例については、Python オントロジー SDK のドキュメントを参照してください。
Workshop で、モジュールの左側にある変数タブから Python 関数を検索します。サーバーレス関数とデプロイ済み関数の両方がここに表示されます。サーバーレス関数は、常にどのバージョンでも実行でき、手動でデプロイする必要はありません。デプロイ済み関数には、関数と関数バージョンのそれぞれについて、次の3つの状態のいずれかを示すアイコンが表示されます。
関数のリポジトリで同時にホストされるバージョンは1つだけです。ダウンタイムを抑えて関数を変更するには、変更を加えた新しい関数(function_v1 など)を追加し、こちらの説明に従ってタグを付けることを推奨します。タグとリリースの下にある公開済み関数から、Ontology Manager で開くを選択します。
Ontology Manager で、アプリケーションで使用する関数リポジトリのバージョンを選択し、アップグレードを選択します。
このリポジトリの関数を使用しているすべての下流のアプリケーションを、デプロイした新しいバージョンに更新します。以前のデプロイメントバージョンは実行されなくなるため、この変更を行う間、アプリケーションには短いダウンタイムが発生します。function_v0 と function_v1 は同時に利用可能になるため、新しいデプロイメントバージョンに切り替える必要はありますが、使用する関数を変更する必要はありません。function_v0 が使われなくなったら、その関数を削除できます。
Workshop で関数が期待どおりに動作しない場合は、まず、問題が関数のロジックに関するものか、応答性に関するものかを確認します。ロジックに問題がある場合は、関数の元となるコードリポジトリのソースコードを確認します。関数が応答しない、またはエラーをスローする問題がある場合は、次の手順に従います。
関数ベースの列を作成するには、次の要件を満たす関数を公開する必要があります。
関数の入力パラメーターには、オブジェクトセットパラメーター(ontology_sdk.ontology.object_sets からインポート)を含める必要があり、任意でほかの入力パラメーターを含めることもできます。このオブジェクトセットパラメーターにより、テーブルに表示されているオブジェクトを関数に渡して、目的の派生列を生成できます。ここでは list[ObjectType] パラメーターも使用できますが、パフォーマンスが低いため、この選択肢は推奨しません。
関数の戻り値の型は dict[ObjectType, ColumnType] である必要があります。ここで、ColumnType は列に使用するデータ型です。関数から複数の列を返す場合は、dict[ObjectType, CustomType] である必要があります。カスタム型については詳しくはこちらをご覧ください。
上記の条件を満たす関数を設定して公開すると、オブジェクトテーブルウィジェットの設定で、関数ベースのプロパティ列を設定できます。
1列を返す関数の例。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15from functions.api import Date, Integer, String, function from ontology_sdk import FoundryClient from ontology_sdk.ontology.object_sets import MyObjectTypeObjectSet from ontology_sdk.ontology.objects import MyObjectType @function def function_backed_column_single_col( selected_objects: MyObjectTypeObjectSet ) -> dict[MyObjectType, Integer]: final_dict = {} for curr_obj in selected_objects: final_dict[curr_obj] = 10 # 値は任意のロジックで定義できます return final_dict

複数の列を返す関数の例。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17from dataclasses import dataclass @dataclass class CustomType: column_name_a: int column_name_b: int @function def function_backed_column_multiple_cols( selected_objects: MyObjectTypeObjectSet, some_other_parameter: String ) -> dict[MyObjectType, CustomType]: final_dict = {} for curr_obj in selected_objects: final_dict[curr_obj] = CustomType(column_name_a=10, column_name_b=20) return final_dict
