| Número de ID do Erro |
BUG-000148951 |
| Enviado | May 3, 2022 |
| Última Modificação | June 17, 2025 |
| Aplica-se à | ArcGIS GIS Server |
| Versão encontrada | 10.9 |
| Sistema Operacional | Windows OS |
| Versão do Sistema Operacional | 10.0 64 Bit |
| Versão Fixa | 3.1 |
| Status | Fixed
O problema foi corrigido. Consulte a Versão Corrigida e Informações Adicionais, se aplicável, para obter mais informações
|
Informações Adicionais
The way the attribute rule is authored is the main cause of the performance.
The attribute rule loops through the entire `Property` layer looking for a property matching the edited feature name. What exacerbates the problem is the fact that the attribute rule is permitted to be executed in the client (Exclude from App Evaluation is unchecked).
ArcGIS Pro first executes the rule locally before sending the applyEdits function, which means ArcGIS Pro needs to fetch all properties from the service, causing paging query requests defined by the maximum record size. The time to pull the class to the client is what takes most of the execution. Later, the applyEdits function is sent to the server to only repeat the same process to execute the attribute rule on the server side. The queries are faster due to querying the database directly. This can be avoided by rewriting the rule to push the where clause to the database, which should push the time to a sub-second.
This attribute rule did, however, expose an optimization in Arcade when some of the fields are asked to be retrieved. The optimization fix was pushed to 11.1/3.1 but cannot be patched to older releases.
Solução Provisória
Rewrite the attribute rule as follows: if ($originalfeature.Name != $feature.Name) { var newName = $feature.Name; var oid = $feature.OBJECTID; var Properties = FeatureSetByName($datastore, 'Branch.GIS.Property', ['OBJECTID'], false); var duplicates = Filter(Properties, 'RetiredByRecord IS NULL AND Name=@newName AND OBJECTID < > @oid') return false; } return true;
Etapas para Reproduzir