Hi,
I have a feature class with calculation attribute rules set up. The rule works out an attribute based on an intersection with another feature class. The feature class is versioned (BV) and published as a web layer with feature access and version management. It is the only feature class in the service. I have a rule like this:
var fsOwnership = FeatureSetByName($datastore,"GIS.GISADMIN.Ownership",["propertyid"],true);
var fsOwnershipInts = Intersects(fsOwnership , Geometry($feature));
var ownership = First(fsOwnershipInts);
if(IsEmpty(ownership)){
return 999;
}else{
if(IsEmpty(ownership.propertyid)){
return 999;
}else{
return ownership.propertyid;
}
}
this rule is set for insert and update.
When editing via the feature service in ArcGIS Pro, the rule fires correctly on an insert - but DOESN'T on an update. On an update it does this:
so it can find it for an insert but not an update?
has anyone seen this? ArcGIS Enterprise 10.7.1 with SQL Server back end.
Thanks
Fraser
EDIT:
the help does say
The map or feature service containing one or more layers from which to create a FeatureSet. Typically, this value is the $map
or $datastore
global.
which suggests it expects the layer to be in the FS. We can't do this as the other feature class isn't versioned and doesn't fit with the publishing strategy. And it also doesn't explain why it's working for the insert. trying $map doesn't work with ArcGIS Pro
Sorry - should have also mentioned worked as expected via direct db connection before branch versioning.
EDIT 2:
Gets stranger - when you look at the rules in pro via design from the database connection you see
var fsOwnership = FeatureSetByName($datastore,"GIS.GISADMIN.Ownership",["propertyid"],true);
or
var featureSet=FeatureSetByName($datastore,"GIS.GISADMIN.Resource", ["GlobalID","IsActive"], true);
if you add the feature service to the map and do design you see
var fsOwnership = FeatureSetByName($datastore,"{8CC3904F-4B31-4B74-98F4-9ECF13DE8F72}",["propertyid"],true);
and
var featureSet=FeatureSetByName($datastore,"L0Resource", ["GlobalID","IsActive"], true);
The first is the ID of the layer in the gdb items table. Don't know where it got the second from....