UIB: Data ResourceのAggregation Queryでの集計について
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
06-22-2025 11:49 PM - 編集済み 06-23-2025 06:32 PM
こんにちは。
UI BuilderのData Resourceにある「Aggregation Query」で承認テーブルやTaskテーブルの件数を取得する定義を
しています。
しかし、adminロール持っている場合は、エラーにはならないのですが、以下のように権限によって結果が変わります。
一般利用者の場合
・承認テーブルの件数:OK --> NG (itilロール持っているとOKで、外すとNGでした)
・Taskテーブルの件数:NG
委任開発者権限がある場合
・承認テーブルの件数:NG
・Taskテーブルの件数:NG
OK/NGの判断は、Eventsの設定で通知を表示させました。
関係ないかもしれませんが、以下のACLを定義しても結果は変わりませんでした。
別途、定義しないと利用できないのでしょうか?
環境は、Xanadu P7b, Yokohama P3ともに発生しています。
なお、syslogに以下のメッセージが表示されていましたが、対処方法が分からず困っております。
GraphQL API - GlideGraphQL : Query: Exception encountered processing field: GlideAggregate_Query - Insufficient rights to query records: com.glide.graphql.GlideGraphQLException: Query: Exception encountered processing field: GlideAggregate_Query - Insufficient rights to query records: com.glide.graphql.GlideGraphQLException$Builder.build(GlideGraphQLException.java:120)
com.glide.graphql.datasources.glideaggregate.fetchers.GlideAggregateDataFetcher.get(GlideAggregateDataFetcher.java:89)
com.glide.graphql.datasources.glideaggregate.fetchers.GlideAggregateListDataFetcher.get(GlideAggregateListDataFetcher.java:17)
com.glide.graphql.datasources.glideaggregate.fetchers.GlideAggregateListDataFetcher.get(GlideAggregateListDataFetcher.java:9)
com.glide.graphql.impl.security.SecurityDataFetcher.get(SecurityDataFetcher.java:37)
com.glide.graphql.fetchers.GraphQLTransactionCancelledFetcher.get(GraphQLTransactionCancelledFetcher.java:26)
graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation.lambda$instrumentDataFetcher$0(DataLoaderDispatcherInstrumentation.java:93)
com.glide.graphql.impl.security.paths.PathSecurityDataFetcher.get(PathSecurityDataFetcher.java:32)
graphql.execution.instrumentation.dataloader.FallbackDataLoaderDispatchStrategy.lambda$modifyDataFetcher$0(FallbackDataLoaderDispatchStrategy.java:25)
graphql.execution.ExecutionStrategy.invokeDataFetcher(ExecutionStrategy.java:544)
graphql.execution.ExecutionStrategy.fetchField(ExecutionStrategy.java:508)
graphql.execution.ExecutionStrategy.fetchField(ExecutionStrategy.java:449)
graphql.execution.streaming.StreamingExecutionStrategy.fetchField(StreamingExecutionStrategy.java:45)
以下、省略
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
06-23-2025 06:38 PM
本件、対象テーブルの全レコードに対してread権限を持っている場合は、正常に取得できるようです。
ただし、全レコードにread権限を付与するのは問題があるので、回避策として独自のData Broker Server Script(transform)を作成することにしました。
function transform(input) {
const table = input.table;
const encodedQuery = input.encodedQuery;
var gr = new GlideRecord(table);
gr.addEncodedQuery(encodedQuery);
gr.query();
var count = gr.getRowCount();
return {
count: count
};
}