I'm getting the the below error message when attempting to apply a Rated KVA attribute to Medium Voltage Transformers. This was a default constraint rule on devices with the Utility Utility Network Enterprise v1. The only difference is I applied this to a Enterprise Server 10.8.1 instead of 10.9.1. Does the arcade expression have an actual error or is because I'm applying it to an older server?
// Assigned To: ElectricDevice
// Type: Constraint
// Name: ElectricDevice - Transformer kVA
// Description: Validates that the features kVA is valid based on the type of transformer
// Subtypes: All
// Error Number: 5702
// Error Message: Feature kVA is not valid
// Trigger: Insert, Update
// Exclude From Client: False
// Disable: False
// Related Rules: Some rules rely on additional rules for execution. If this rule works in conjunction with another, they are listed below:
// - None
// Duplicated in: This rule may be implemented on other classes, they are listed here to aid you in adjusting those rules when a code change is required.
// - None
// ************* User Variables *************
// This section has the functions and variables that need to be adjusted based on your implementation
// 38 - Medium Voltage Transformer
// 39 - Medium Voltage Step Transformer
var valid_asset_groups = [38, 39];
var kva = $feature.ratedpower;
// ************* End User Variables Section *************
// ************* Functions *************
function asset_type_to_kva(id) {
return Decode(id,
782, [5000, 10000, 15000, 25000, 37500, 50000],
783, [45000, 75000, 112500, 150000, 225000, 300000, 500000, 750000, 1000000, 1500000, 2000000, 2500000, 3000000, 3750000, 5000000, 7000000, 7500000, 10000000],
785, [5000, 10000, 15000, 25000, 37500, 50000, 75000, 100000, 167000, 250000, 333000, 500000],
788, [30000, 45000, 75000, 112500, 150000, 225000, 300000],
789, [5000, 10000, 15000, 25000, 37500, 50000, 75000, 100000, 167000, 250000, 333000],
792, [45000, 75000, 112500, 150000, 225000, 300000, 500000, 750000, 1000000, 1500000, 2000000, 2500000, 3000000, 3750000, 5000000, 7000000, 7500000, 10000000],
793, [25000, 37500, 50000, 75000, 100000, 167000],
794, [150000, 225000, 300000, 500000, 750000, 2500000],
801, [5000, 10000, 15000, 25000, 37500, 50000, 75000, 100000, 167000, 250000, 333000, 500000],
null)
}
// ************* End Functions *************
if (IsEmpty(kva)){
return true;
}
if (!Includes(valid_asset_groups, $feature.assetgroup)) {
return true;
}
// Find the valid values, if an entry was not found, null is returned
var valid_kva = asset_type_to_kva($feature.assettype);
if (IsEmpty(valid_kva)) {
return true;
}
return Includes(valid_kva, kva)
Solved! Go to Solution.
The expression uses the Includes() function, which is only available since Arcade 1.12 with ArcGIS Enterprise Server 10.9
You can do it the "old" way, which is more cumbersome:
// Assigned To: ElectricDevice
// Type: Constraint
// Name: ElectricDevice - Transformer kVA
// Description: Validates that the features kVA is valid based on the type of transformer
// Subtypes: All
// Error Number: 5702
// Error Message: Feature kVA is not valid
// Trigger: Insert, Update
// Exclude From Client: False
// Disable: False
// Related Rules: Some rules rely on additional rules for execution. If this rule works in conjunction with another, they are listed below:
// - None
// Duplicated in: This rule may be implemented on other classes, they are listed here to aid you in adjusting those rules when a code change is required.
// - None
// ************* User Variables *************
// This section has the functions and variables that need to be adjusted based on your implementation
// 38 - Medium Voltage Transformer
// 39 - Medium Voltage Step Transformer
var valid_asset_groups = [38, 39];
var kva = $feature.ratedpower;
// ************* End User Variables Section *************
// ************* Functions *************
function asset_type_to_kva(id) {
return Decode(id,
782, [5000, 10000, 15000, 25000, 37500, 50000],
783, [45000, 75000, 112500, 150000, 225000, 300000, 500000, 750000, 1000000, 1500000, 2000000, 2500000, 3000000, 3750000, 5000000, 7000000, 7500000, 10000000],
785, [5000, 10000, 15000, 25000, 37500, 50000, 75000, 100000, 167000, 250000, 333000, 500000],
788, [30000, 45000, 75000, 112500, 150000, 225000, 300000],
789, [5000, 10000, 15000, 25000, 37500, 50000, 75000, 100000, 167000, 250000, 333000],
792, [45000, 75000, 112500, 150000, 225000, 300000, 500000, 750000, 1000000, 1500000, 2000000, 2500000, 3000000, 3750000, 5000000, 7000000, 7500000, 10000000],
793, [25000, 37500, 50000, 75000, 100000, 167000],
794, [150000, 225000, 300000, 500000, 750000, 2500000],
801, [5000, 10000, 15000, 25000, 37500, 50000, 75000, 100000, 167000, 250000, 333000, 500000],
null)
}
// ************* End Functions *************
if (IsEmpty(kva)){
return true;
}
//if (!Includes(valid_asset_groups, $feature.assetgroup)) {
// return true;
//}
for (var i in valid_asset_groups) {
if(valid_asset_groups[i] == $feature.assetgroup) {
return true;
}
}
// Find the valid values, if an entry was not found, null is returned
var valid_kva = asset_type_to_kva($feature.assettype);
if (IsEmpty(valid_kva)) {
return true;
}
//return Includes(valid_kva, kva)
for (var i in valid_kva) {
if (valid_kva[i] == kva) {
return true;
}
}
return false;
The expression uses the Includes() function, which is only available since Arcade 1.12 with ArcGIS Enterprise Server 10.9
You can do it the "old" way, which is more cumbersome:
// Assigned To: ElectricDevice
// Type: Constraint
// Name: ElectricDevice - Transformer kVA
// Description: Validates that the features kVA is valid based on the type of transformer
// Subtypes: All
// Error Number: 5702
// Error Message: Feature kVA is not valid
// Trigger: Insert, Update
// Exclude From Client: False
// Disable: False
// Related Rules: Some rules rely on additional rules for execution. If this rule works in conjunction with another, they are listed below:
// - None
// Duplicated in: This rule may be implemented on other classes, they are listed here to aid you in adjusting those rules when a code change is required.
// - None
// ************* User Variables *************
// This section has the functions and variables that need to be adjusted based on your implementation
// 38 - Medium Voltage Transformer
// 39 - Medium Voltage Step Transformer
var valid_asset_groups = [38, 39];
var kva = $feature.ratedpower;
// ************* End User Variables Section *************
// ************* Functions *************
function asset_type_to_kva(id) {
return Decode(id,
782, [5000, 10000, 15000, 25000, 37500, 50000],
783, [45000, 75000, 112500, 150000, 225000, 300000, 500000, 750000, 1000000, 1500000, 2000000, 2500000, 3000000, 3750000, 5000000, 7000000, 7500000, 10000000],
785, [5000, 10000, 15000, 25000, 37500, 50000, 75000, 100000, 167000, 250000, 333000, 500000],
788, [30000, 45000, 75000, 112500, 150000, 225000, 300000],
789, [5000, 10000, 15000, 25000, 37500, 50000, 75000, 100000, 167000, 250000, 333000],
792, [45000, 75000, 112500, 150000, 225000, 300000, 500000, 750000, 1000000, 1500000, 2000000, 2500000, 3000000, 3750000, 5000000, 7000000, 7500000, 10000000],
793, [25000, 37500, 50000, 75000, 100000, 167000],
794, [150000, 225000, 300000, 500000, 750000, 2500000],
801, [5000, 10000, 15000, 25000, 37500, 50000, 75000, 100000, 167000, 250000, 333000, 500000],
null)
}
// ************* End Functions *************
if (IsEmpty(kva)){
return true;
}
//if (!Includes(valid_asset_groups, $feature.assetgroup)) {
// return true;
//}
for (var i in valid_asset_groups) {
if(valid_asset_groups[i] == $feature.assetgroup) {
return true;
}
}
// Find the valid values, if an entry was not found, null is returned
var valid_kva = asset_type_to_kva($feature.assettype);
if (IsEmpty(valid_kva)) {
return true;
}
//return Includes(valid_kva, kva)
for (var i in valid_kva) {
if (valid_kva[i] == kva) {
return true;
}
}
return false;
Thanks Johannes, that was what I was assuming. I just disabled the rule for now and I can make edits appropriately. I will also give your adjustments a try.