この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Apex Connector Framework の検索条件

DataSource.QueryContext には、DataSource.TableSelection が 1 つあります。DataSource.SearchContext には複数の TableSelection を指定できます。各 TableSelection には、SOQL または SOSL クエリの WHERE 句を表す filter プロパティがあります。

たとえば、ユーザが外部オブジェクトのレコード詳細ページに移動すると、DataSource.Connection が実行されます。バックグラウンドで、次のような SOQL クエリが生成されます。

1SELECT columnNames 
2FROM externalObjectApiName 
3WHERE ExternalId = 'selectedExternalObjectExternalId'

この SOQL クエリにより、DataSource.Connection クラスで query メソッドが呼び出されます。次のコードでこの条件を検出できます。

1if (context.tableSelection.filter != null) {
2    if (context.tableSelection.filter.type == DataSource.FilterType.EQUALS 
3        && 'ExternalId' ==  context.tableSelection.filter.columnName 
4        && context.tableSelection.filter.columnValue instanceOf String) {
5        String selection = (String)context.tableSelection.filter.columnValue;
6        return DataSource.TableResult.get(true, null, 
7                tableSelection.tableSelected, findSingleResult(selection));
8    }
9}

このサンプルコードでは、選択された ExternalId から、1 つのレコードを返す findSingleResult メソッドが実装されたものと想定しています。コードにより、要求された ExternalId と一致するレコードが取得されることを確認します。