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 と一致するレコードが取得されることを確認します。