Hello @MikeMillerGIS
When applying an asset package to Postgres 14 Enterprise 11.3, I noticed that some of my attribute rules did not apply while others did.
Only Constraint rules seems concerned in my case
Here is a sample code of a constraint rule that did apply (intended to check if a certain field has unique value if not null) :
if($feature.NDB == null){
return True
}
else{
var concession = $feature.CONCESSI;
var gid = $feature.GLOBALID
var fsBrt = Filter(FeatureSetByName($datastore, "ElectricDevice", ["GLOBALID", "ASSETGROUP", "NDB", "NSRNDB"], False), "ASSETGROUP = 10 AND CONCESSI = @concession AND GLOBALID <> @gid AND CYCLEVIE NOT IN (4,7)");
var uniqueIds = [];
var i = 0;
for (var brt in fsBrt) {
if (brt.NDB != null){
uniqueIds[i++] = brt.NSRNDB
}
}
var calcNsrNdb = concatenate($feature.NSR,'/',$feature.NDB)
if (Includes(uniqueIds, calcNsrNdb)){
return False
}
else{
return True
}
}And a very similar Constraint rule that will not apply :
if ($feature.NUMERO == null){
return True
}
else{
var assetGroup = $feature.ASSETGROUP
var concession = $feature.CONCESSI;
var gid = $feature.GLOBALID
var uniqueIds = [];
var i = 0;
var table = "ElectricJunction"
if (Includes([11, 12, 13, 15, 16], assetGroup)){
table = "ElectricDevice"
}
if (Includes([16, 33], assetGroup)){
var HtaNoeudfeatureDataset = Filter(FeatureSetByName($datastore, "ElectricJunction", ["GLOBALID", "NUMERO", "SIG_ID_UNIQUE"], False), "ASSETGROUP = 33 AND CONCESSI = @concession AND GLOBALID <> @gid AND CYCLEVIE NOT IN (4,7)");
var HtaInterfeatureDataset = Filter(FeatureSetByName($datastore, "ElectricDevice", ["GLOBALID", "NUMERO", "SIG_ID_UNIQUE"], False), "ASSETGROUP = 16 AND CONCESSI = @concession AND GLOBALID <> @gid AND CYCLEVIE NOT IN (4,7)");
for (var feature in HtaNoeudfeatureDataset) {
if (feature.NUMERO != null){
uniqueIds[i++] = feature.SIG_ID_UNIQUE
}
}
for (var feature in HtaInterfeatureDataset) {
if (feature.NUMERO != null){
uniqueIds[i++] = feature.SIG_ID_UNIQUE
}
}
}
else{
var featureDataset = Filter(FeatureSetByName($datastore, table, ["GLOBALID", "NUMERO", "SIG_ID_UNIQUE"], False), "ASSETGROUP = @assetGroup AND CONCESSI = @concession AND GLOBALID <> @gid AND CYCLEVIE NOT IN (4,7)");
for (var feature in featureDataset) {
if (feature.NUMERO != null){
uniqueIds[i++] = feature.SIG_ID_UNIQUE
}
}
}
if (Includes(uniqueIds, $feature.SIG_ID_UNIQUE)){
return False
}
else{
return True
}
}
I guess it may be related to the "table" variable used to manage the table used in the featureSetByName function. In general, Apply Asset Package will add geodatabase name as a prefix, like "my_gdb.ElectricJunction" but in this case it fails without any error. Apply Asset Package will end normally, but the rule will not apply.
Do you have any idea how to resolve this ?