Working with Advanced Definition Objects
Removing Templates in the Language Editor
Prerequisites
A valid RuleSession, A valid Entity
Namespaces
InRule.Repository , InRule.Repository.Vocabulary , InRule.Repository.Templates
Classes
RuleApplicationDef, TemplateDef
See Also
Embedding the Language Rule Editor
References
InRule.Repository.dll
The following example demonstrates how to remove Templates from the Business Language Editor. This code must run before the Populate method for the Business Language Editor is called.
Removing built-in InRule Templates
// Create a new VocabularyDef if Vocabulary is null
if (ruleAppDef.Vocabulary == null)
{
ruleAppDef.Vocabulary = new VocabularyDef();
}
// Remove the "Minus" template by adding a TemplateAvailabilitySettings and setting availability to Exclude
ruleAppDef.Vocabulary.TemplateAvailabilitySettings.Add(TemplateLiterals.TemplateGuids.Minus,
InRule.Repository.Vocabulary.TemplateAvailability.Exclude);
Removing Rule Templates
// Make sure the Vocabulary is not null
if (ruleAppDef.Vocabulary == null)
{
// Create a new VocabularyDef if null
ruleAppDef.Vocabulary = new VocabularyDef();
}
// Get rule template by name (Note: this is not the same as the Display Name)
TemplateDef templateDef = (TemplateDef)ruleAppDef.Vocabulary.Templates["ExpressionTemplateDef1"];
// Remove the template using it's GUID
ruleAppDef.Vocabulary.TemplateAvailabilitySettings.Add(templateDef.Guid,
TemplateAvailability.Exclude);
Determine FieldDef Dependencies
Prerequisites
A valid RuleRepositoryDefBase, A valid EvalNetwork
Namespaces
InRule.Repository , InRule.Repository.Infos
Classes
RuleApplicationDef, RuleRepositoryDefBase, DefUsageNetwork, FieldDef
References
InRule.Common.dll, InRule.Repository.dll
Determine FieldDef Dependencies
The following recursive method shows how to identify all FieldDef dependencies for a given RuleRepositoryDefBase object.
public static IEnumerable<DefUsage> GetDependentFieldDefs(RuleRepositoryDefBase def,
DefUsageNetwork network)
{
// Create collection of all usages by the given definition
var usages = network.GetDefUsages(def.Guid, true);
// Return list of dependencies
return usages;
}
Instantiate the DefUsageNetwork
The following code snippet demonstrates the proper way to create an instance of the DefUsageNetwork.
public static DefUsageNetwork GetDefUsageNetwork(RuleApplicationDef ruleAppDef)
{
return DefUsageNetwork.Create(ruleAppDef);
}