This article contains the sections:
- Using the RuleApplicationDef Object
- Retrieving Definition Objects at Runtime
- Using Element Metadata
- Working with Attributes
- Working with Value Lists
Using the RuleApplicationDef Object
Prerequisites | A valid RuleSession |
Namespaces | InRule.Runtime |
Classes | RuleApplicationDefInfo, RuleApplicationDef, DataElementDef, EntityDef |
See Also | Creating a RuleSession |
RuleApplicationDef metadata
// System and user-defined attributesstring attributeValue = ruleSession.GetRuleApplicationDef().Attributes["MyAttribute"];
// Categories defined in the rule application
CategoryDefCollection categories = ruleSession.GetRuleApplicationDef().Categories;
// Getting name of first category in collection
string catalogName = categories[0].Name;
// Getting DataElementDef
DataElementDef dataElementDef = (DataElementDef)ruleSession.GetRuleApplicationDef().DataElements["MyInlineTable"];
Iterate through the entities of a rule application
// Iterate through the entities for the rule applicationforeach (EntityDef entityDef in ruleSession.GetRuleApplicationDef().Entities)
{
Console.WriteLine(entityDef.Name);
}
Retrieving Definition Objects at Runtime
Prerequisites | A valid RuleSession |
Namespaces | InRule.Runtime, InRule.Repository, InRule.Repository.RuleElements |
Classes | EntityDef, FieldDef, RuleSetDef, RuleElementDef, Entity, Field, RuleSet, RuleElement |
See Also | Using Element Metadata |
The following examples demonstrate how to retrieve definition objects through the runtime objects. These objects can then be utilized to access object metadata and user-defined attributes.
// Get EntityDef from Entity
EntityDef entityDef = entity.GetDef();
// Get FieldDef from Field
FieldDef fieldDef = field.GetDef();
// Get CollectionDef from Collection, assigned to FieldDefFieldDef collectionDef = collection.GetDef();
// Get RuleSetDef from RuleSetRuleSetDef ruleSetDef = (RuleSetDef)ruleSet.GetDef();
// Get RuleElementDef from RuleElement, getting first child element in this exampleRuleElementDef ruleElementDef = ruleSet.RuleElements[0].GetDef();
Using Element Metadata
Prerequisites | A valid RuleSession |
Namespaces | InRule.Runtime, InRule.Repository, InRule.Repository.RuleElements |
Classes | EntityDef, FieldDef, RuleSetDef, RuleElement |
See Also | Retrieving Definition Objects at Runtime |
The definition objects, available at runtime, can be used to retrieve element definitions and user-defined metadata. See Retrieving Definition Objects at Runtime for details.
Iterate through the fields objects on an entity
// Iterate through fields in an entityforeach (FieldDef fieldDef in invoiceEntity.GetDef().Fields)
{
if (fieldDef.IsCalculated)
// Display the expression if a calculation
Console.WriteLine(fieldDef.Calc.FormulaText);
if (fieldDef.IsAnEntityDataType)
// Display the referenced entity if a child entity field
Console.WriteLine(fieldDef.DataTypeEntityName);
}
Field metadata
// Get data typestring dataType = fieldDef.DataType.ToString();
// Get default value
string defaultValue = fieldDef.DefaultValue.ToString();
// Get Attributes
ICollection attributes = fieldDef.Attributes.Values;
// Get assigned categories
ICollection assigned = fieldDef.AssignedCategories;
Iterate through the rulesets on an entity
// Iterate through the rule sets on an entityforeach (RuleSet ruleSet in invoiceEntity.RuleSets)
{
// Cast into a RuleSetDef
RuleSetDef ruleSetDef = (RuleSetDef)ruleSet.GetDef();
// See if this is an active explicit ruleset
if (ruleSetDef.FireMode == RuleSetFireMode.Explicit && ruleSetDef.IsActive)
{
Console.WriteLine(ruleSet.Name);
}
}
Working with Attributes
Prerequisites | A valid EntityDef and FieldDef |
Namespaces | InRule.Repository |
Classes | EntityDef, FieldDef |
See Also | Creating a RuleSession, Retrieving Definition Objects at Runtime |
Retrieve a user-defined attribute on an entity
// Retrieve an attribute defined on an entityConsole.WriteLine(entityDef.Attributes.Default["MyAttribute"]);
Iterate through the attributes on a field
if (fieldDef.Attributes != null && fieldDef.Attributes.Count > 0){
foreach (XmlSerializableStringDictionary.XmlSerializableStringDictionaryItem attributeItem
in fieldDef.Attributes.Default)
{
Console.WriteLine(attributeItem.Key + ":" + attributeItem.Value);
}
}
Working with Value Lists
Prerequisites | A valid Entity and RuleSession |
Namespaces | InRule.Runtime, InRule.Repository |
Classes | ValueListItem, RuleApplicationDef, ListItemDefCollection |
Populating a combobox from a value list
// Retrieve a value list that is associated to a fieldValueList valueList = entity.Fields["State"].AssociatedValueList;
foreach (ValueListItem valueListItem in valueList)
{
// Add the list item value to the combobox
comboBox.Items.Add(valueListItem);
comboBox.DisplayMemberPath = "Value";
}
Populating a combobox from a standalone value list
// Get value list using the session’s DataManagerValueList myList = ruleSession.Data.GetValueList("StandAloneValueList");
// Tell combo box what field to display to the end user
comboBox.DisplayMemberPath = "DisplayText";
// Add the item to the combo box
foreach (ValueListItem item in myList)
{
comboBox.Items.Add(item);
}
Comments
0 comments
Please sign in to leave a comment.