public class RuleSheet extends RuleCommon<RuleSheet>
Dimensions and DTActions can be reordered within the RuleSheet
using DictionaryComponentTable.move(int,int,boolean)
A RuleSheet may be flagged with "order rules by bucket". In this case,
DTRules cannot be explicitly reordered. DTRules are ordered by the position of the
DimensionNode Buckets in the containing Bucketset.
RuleSheet provides boolean properties to allow/disallow gaps and to automatically
resolve conflicts by overriding subsuming rules. There is also a method to
check for gaps RuleSheet.findGaps()
A base priority can be defined so that all rules in the sheet will have priority greater than or equal to the base.
RuleBase.Priority, RuleBase.RuleType
DictionaryComponent.Diff<T extends DictionaryComponent>, DictionaryComponent.DiffSummary, DictionaryComponent.DiffType
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CONFLICT_AUTO_OVERRIDE |
static java.lang.String |
CONFLICT_IGNORE |
static java.lang.String |
CONFLICT_MANUAL |
BUILTIN
PROP_ACCESS, PROP_ACTION_SELECTED, PROP_ACTION_TABLE, PROP_ACTIVE, PROP_ACTUAL_TEST_OUTPUT_TABLE, PROP_ADHOC_TEST_VALIDATION, PROP_ADVANCED_MODE, PROP_AGGREGATE, PROP_AGGREGATE_TABLE, PROP_ALIAS, PROP_ALLOW_GAPS, PROP_ALWAYS_SELECTED, PROP_ARRAY, PROP_ARRAY_COMPONENT_TYPE, PROP_ARRAY_COMPONENT_TYPE_ID, PROP_ARRAY_FACT_TYPE_TABLE, PROP_AUTO_CONFLICT_RESOLUTION, PROP_AUTO_PATTERN_PROPERTY, PROP_AUTO_SYNC, PROP_BODY, PROP_BUCKET_ID_TABLE, PROP_BUCKET_SET, PROP_BUCKET_SET_ID, PROP_BUCKET_SET_TABLE, PROP_BUCKET_TABLE, PROP_CALENDAR_FORM, PROP_CHECK_RULE_FLOW, PROP_CHILD_DIMENSION_NODES, PROP_CONFLICT, PROP_CONFLICT_POLICY, PROP_CONNECTIVE, PROP_CONSTANT, PROP_CONSTRUCTOR, PROP_CONSTRUCTOR_TABLE, PROP_CREATION_UPDATE_NUMBER, PROP_CURSOR_POSITION, PROP_CUSTOM_BINDING, PROP_DATA_MODEL, PROP_DATA_SOURCE, PROP_DECISION_FUNCTION, PROP_DECISION_FUNCTION_ID, PROP_DECISION_FUNCTION_INPUT_TABLE, PROP_DECISION_FUNCTION_OUTPUT_TABLE, PROP_DECISION_FUNCTION_RULESET_TABLE, PROP_DECISION_FUNCTION_TABLE, PROP_DECISION_MODEL, PROP_DESCRIPTION, PROP_DF_FACT, PROP_DF_FACT_ID, PROP_DICT_LOADING_EXTENSION, PROP_DICTIONARY_LINK_TABLE, PROP_DIMENSION_NODE_TABLE, PROP_DIMENSION_TABLE, PROP_DISALLOW_ERROR_SUPPRESSION, PROP_DRAFT, PROP_DSL_ID, PROP_DSL_PARAMETER_TABLE, PROP_DSL_TABLE, PROP_DSL_VALUE, PROP_DT_ACTION_NODE_TABLE, PROP_DT_ACTION_PARAMETER_NAME, PROP_DTACTION_TABLE, PROP_DTRULE_TABLE, PROP_EFFECTIVE_END_DATE, PROP_EFFECTIVE_START_DATE, PROP_ENUM, PROP_ENUM_BUCKET_SET, PROP_ENUM_BUCKET_SET_ID, PROP_ENUM_TYPE, PROP_EXCEPTION_IDS, PROP_EXCEPTIONS, PROP_EXCLUDED, PROP_EXPECTED_TEST_OUTPUT_TABLE, PROP_EXPRESSION, PROP_EXPRESSION_TABLE, PROP_FACT_PATH, PROP_FACT_PATH_IDS, PROP_FACT_TABLE, PROP_FACT_TYPE, PROP_FACT_TYPE_ID, PROP_FACT_TYPE_IDS, PROP_FACT_TYPE_TABLE, PROP_FACT_TYPES, PROP_FIELD_TABLE, PROP_FINAL, PROP_FORM, PROP_FORMAL_PARAMETER_TABLE, PROP_FUNCTION, PROP_FUNCTION_ID, PROP_FUNCTION_SIGNATURE, PROP_FUNCTION_TABLE, PROP_GENERATED_FROM, PROP_GLOBAL_ALIAS, PROP_ID, PROP_INCLUDE_CHAINED_EXPR, PROP_INCLUDED, PROP_INTERFACE, PROP_INTERFACE_IDS, PROP_INTERFACES, PROP_IS_ABSTRACT, PROP_IS_CONSTANT, PROP_IS_ENUM, PROP_IS_FINAL, PROP_IS_JAXB2, PROP_IS_PRIMARY_KEY, PROP_IS_STATIC, PROP_IS_TOPLEVEL_VIEW_OBJECT, PROP_LEFT, PROP_LIFECYCLE, PROP_LIFECYCLE_DESCRIPTION, PROP_LINK_PATH, PROP_LIST, PROP_LIST_CONTENT_TYPE, PROP_LIST_CONTENT_TYPE_ID, PROP_LOCAL, PROP_LOGICAL, PROP_METHOD_TABLE, PROP_MODIFIERS, PROP_NAME, PROP_NAMESPACE, PROP_NESTED_TABLE, PROP_NO_CONFLICT, PROP_NO_RULE_FIRED_IS_ERROR, PROP_NODE_NAME, PROP_OPERATOR, PROP_OPERATOR_ID, PROP_ORDER_RULES_BY_BUCKET, PROP_OTHERWISE, PROP_OUTPUT_TYPES, PROP_OVERLOADED_PARAMETER_TABLE, PROP_OVERRIDDEN_BY, PROP_OVERRIDE, PROP_PACKAGE, PROP_PARAM, PROP_PARAM_EXPRESSION, PROP_PARAMETER_ALIAS, PROP_PARAMETER_ID, PROP_PARAMETER_LIST, PROP_PARAMETER_NAME, PROP_PARAMETER_REQUIRED, PROP_PARAMETER_TYPE_IDS, PROP_PARAMETER_TYPES, PROP_PARENT_DIMENSION_NODE, PROP_PATTERN_TABLE, PROP_PHRASE_SUGGESTION_FORM, PROP_PREFERENCES, PROP_PREFIX_LINKED_NAMES, PROP_PRIORITY, PROP_PRIVATE_BUCKET_SET, PROP_PROPERTIES, PROP_PROPERTY, PROP_PROPERTY_ID, PROP_PROPERTY_TABLE, PROP_PROPERTY_VALUE_TABLE, PROP_QUALIFIER_PATTERN, PROP_READABLE, PROP_REF_ID, PROP_REPORT_BYUSE_NAMES, PROP_REPORT_PATTERNS, PROP_RESOLVED_TARGET, PROP_RESOLVED_VALUE, PROP_RESOURCE_BUNDLE, PROP_RESTRICT_AUTO_SUGGESTIONS, PROP_RETURN_TYPE, PROP_RIGHT, PROP_RIGHT_SEPARATOR, PROP_RULE_EXEC_ALGORITHM, PROP_RULE_FIRING_LIMIT, PROP_RULE_FIRING_LIMIT_ERROR, PROP_RULE_REPORT_TABLE, PROP_RULE_SET_TABLE, PROP_RULE_SHEET_TABLE, PROP_RULE_TABLE, PROP_RULESET, PROP_RUN_AFTER, PROP_RUN_BEFORE, PROP_SERVICE_CONFIGURATION, PROP_SERVICE_NAME, PROP_SERVICE_NAMESPACE, PROP_SHARED_BUCKET_SET, PROP_SHARED_BUCKET_SET_ID, PROP_SHOW_CONSTANTS, PROP_SHOW_FUNCTIONS, PROP_SHOW_VARIABLES, PROP_SIMPLE_TEST_TABLE, PROP_SOURCE, PROP_STATELESS, PROP_STATIC, PROP_SUPER_CLASS, PROP_SUPER_CLASS_ID, PROP_SUPPORT_XPATH, PROP_SUPPORTS_XPATH_ENABLED, PROP_SYNC_MARK, PROP_SYSTEM, PROP_TARGET, PROP_TARGET_PACKAGE, PROP_TEST_CASE_TABLE, PROP_TEST_FORM, PROP_TEST_INPUT_TABLE, PROP_TEST_MODEL, PROP_TEST_RESULT_TABLE, PROP_TEST_SUITE_TABLE, PROP_TEST_TEMPLATE_TABLE, PROP_TIMESTAMP, PROP_TOKEN_UNDER_CURSOR, PROP_TRANSLATED_ALIAS, PROP_TRANSLATED_DESCRIPTION, PROP_TRANSLATED_GLOBAL_ALIAS, PROP_TRANSLATED_PARAMETER_LIST, PROP_TRANSLATED_QUALIFIER_PATTERN, PROP_TRANSLATED_VALUE, PROP_TRANSLATED_VARIABLE, PROP_TREE, PROP_TREE_MODE, PROP_TYPE, PROP_TYPE_ID, PROP_TYPE_IDS, PROP_TYPES, PROP_UNIQUE_RULESETS, PROP_UNSAVED_TRANSLATED_ALIAS, PROP_UNSAVED_TRANSLATED_DESCRIPTION, PROP_UNSAVED_TRANSLATED_GLOBAL_ALIAS, PROP_UNSAVED_TRANSLATED_QUALIFIER_PATTERN, PROP_UNSAVED_TRANSLATED_VALUE, PROP_UPDATE_NUMBER, PROP_UPDATE_TIME, PROP_VALIDATION, PROP_VALIDATION_UPDATE_NUMBER, PROP_VALUE, PROP_VALUES, PROP_VARIABLE, PROP_VARIABLE_TABLE, PROP_VERBAL_RULE_TABLE, PROP_VERSION, PROP_VERTICAL_ORIENTATION, PROP_VISIBILITY_FILTER, PROP_VISIBILITY_FILTER_ENABLED, PROP_VISIBLE, PROP_WEB_SERVICE, PROP_WRITABLE, PROP_XML_NAME
Modifier and Type | Method and Description |
---|---|
boolean |
canMerge(java.util.List<DimensionNode> nodes)
Test if nodes can be merged.
|
boolean |
canSpan()
Test whether the rulesheet can be spanned.
|
boolean |
canSpan(java.util.List<DimensionNode> nodes)
Test if any of the nodes can be spanned.
|
boolean |
canUnspan()
Test whether the rulesheet can be unspanned.
|
void |
compact()
Compact all rules.
|
void |
compact(java.util.List<DimensionNode> nodes)
Compact the dimension nodes.
|
java.util.List<Gap> |
findGaps()
Find the Gaps (missing rules) in the decision table
|
java.util.List<Action> |
getActions() |
ActionTable |
getActionTable() |
SettableProperty<java.lang.Boolean> |
getAllowGapsProperty()
Get AllowGaps Property.
|
TranslatedProperty |
getConflictPolicyProperty()
Get Conflict Policy Property.
|
DimensionTable |
getDimensionTable()
Get DimensionTable
|
TableProperty<Dimension> |
getDimensionTableProperty()
Get DimensionTable Property
|
DTActionTable |
getDTActionTable()
Get DTActionTable
|
TableProperty<DTAction> |
getDTActionTableProperty()
Get DTActionTable Property
|
DTRuleTable |
getDTRuleTable()
Get DTRuleTable
|
TableProperty<DTRule> |
getDTRuleTableProperty()
Get DTRuleTable Property
|
SettableProperty<java.lang.Boolean> |
getOrderRulesByBucketProperty()
Get OrderRulesByBucket Property
|
SettableProperty<java.lang.Boolean> |
getVerticalOrientationProperty()
Get Vertical Orientation Property
|
boolean |
hasConflict()
whether the decision table has any unresolved conflicts
|
boolean |
hasNoConflict()
whether the decision table has any conflicts resolved as "no conflict"
|
boolean |
hasOverride()
whether the decision table has any conflicts resolved as override
|
boolean |
hasRunBefore()
whether the decision table has any conflicts resolved as "run before"
|
boolean |
isAllowGaps()
Are gaps allowed during validation?
|
boolean |
isAutoConflictResolution()
Deprecated.
use
RuleSheet.getConflictPolicyProperty() and test if the value is RuleSheet.CONFLICT_AUTO_OVERRIDE |
boolean |
isOrderRulesByBucket()
whether rules in this DT are automatically ordered by bucket value
|
boolean |
isVerticalOrientation()
Get Rule Orientation in Decision Table
|
void |
merge(boolean deep)
Deprecated.
|
void |
merge(java.util.List<DimensionNode> nodes)
Merge the dimension nodes.
|
void |
merge(java.util.List<DimensionNode> nodes,
boolean deep)
Deprecated.
use
#merge(List , #compact(List , or #span(List |
void |
optimizeDimensionOrder()
Reorder Dimensions so that the DimensionNode tree has a "low" number
of DimensionNodes.
|
java.lang.Object |
put(java.lang.String key,
java.lang.Object value)
Generic property setter.
|
boolean |
removeActionlessRules()
Remove rules with no actions selected
|
boolean |
removeActionlessRules(int minRuleIndex,
int maxRuleIndex)
Remove rules with index between minRuleIndex and maxRuleIndex inclusive
with no actions selected
|
void |
setAllowGaps(boolean flag)
set whether gaps are allowed during validation
|
void |
setAutoConflictResolution(boolean flag)
Deprecated.
use
RuleSheet.getConflictPolicyProperty() and set the value to RuleSheet.CONFLICT_AUTO_OVERRIDE
or RuleSheet.CONFLICT_MANUAL |
void |
setOrderRulesByBucket(boolean flag)
set whether rules in this DT are automatically ordered by bucket value
|
void |
SetVerticalOrientation(boolean isVertical)
Set whether Rule Orientation in Decision Table is Vertical or Horizontal
|
void |
span()
Span all contiguous dimension nodes with sameBuckets.
|
void |
span(java.util.List<DimensionNode> nodes)
Span the consecutive dimension nodes with sameBuckets.
|
void |
split()
Split all nodes in all Dimensions into siblings such that each node has
a single bucket value.
|
void |
unspan()
Unspan all dimension nodes.
|
getAdvancedModeProperty, getLogicalProperty, getPattern, getPatterns, getPatternTable, getPatternTableProperty, getRoot, getSimpleTest, isAdvancedMode, isLogical, mustBeAdvancedMode, mustNotBeTreeMode, RHSRuleVariables, setAdvancedMode, setLogical
getActiveProperty, getCalendarForm, getCalendarFormOptions, getCalendarFormProperty, getCalendarFormSelected, getEffectiveEndDate, getEffectiveEndDateProperty, getEffectiveStartDate, getEffectiveStartDateProperty, getPriority, getPriorityOptions, getPriorityProperty, getReturnExpressionTableSize, getRuleType, getSimpleTests, getSimpleTestTable, getSimpleTestTableProperty, getTreeModeProperty, isActive, isCustomizable, isTreeMode, isValid, isVisible, setActive, setCalendarForm, setCustomizable, setEffectiveEndDate, setEffectiveStartDate, setPriority, setTreeMode
get, getParent, getParentTable, parentAction, parentActionContext, parentAutoBindingContext, parentFunction, parentPattern, parentRule, parentRuleBase, parentRuleCommon, parentRuleSheet, parentTest, parentVariable, parentVerbalRule
clear, containsKey, containsValue, entrySet, get, getAlias, getAlias, getAlias, getAlias, getAliasProperty, getAllReferences, getContainedDiffs, getCustom, getDependents, getDescription, getDescription, getDescriptionProperty, getDiff, getDiffProperties, getDiffs, getFullyQualifiedAlias, getFullyQualifiedName, getIndex, getIndex, getName, getNameProperty, getNext, getNext, getObjectPath, getOptions, getPrevious, getPrevious, getProperties, getProperty, getReferences, getSelected, getTranslatedAlias, getTranslatedAlias, getTranslatedDescription, hasDiff, init, init, isAliasDistinct, isEmpty, isFullyQualifiedName, isModifiable, isNameDistinct, isSystemProperty, isUnsavedTranslatedAlias, isUnsavedTranslatedDescription, keySet, putAll, remove, removeDiff, setAlias, setAlias, setCustom, setDescription, setDescription, setName, setTranslatedAlias, setTranslatedDescription, size, validate, validate, values
equals, exists, getAEReferences, getCombinedDataModel, getContainedIDs, getContainedIDs, getDataModel, getDictionary, getID, getObjectType, getParentByClass, getParentComponent, getParentComponentTable, getParentObject, getRuleSet, getState, getWarnings, hashCode, isModified, validate
public static final java.lang.String CONFLICT_MANUAL
public static final java.lang.String CONFLICT_AUTO_OVERRIDE
public static final java.lang.String CONFLICT_IGNORE
public java.util.List<Action> getActions()
getActions
in class RuleBase<RuleSheet>
public TableProperty<Dimension> getDimensionTableProperty()
public DimensionTable getDimensionTable()
public TableProperty<DTAction> getDTActionTableProperty()
public DTActionTable getDTActionTable()
public ActionTable getActionTable()
public TableProperty<DTRule> getDTRuleTableProperty()
public DTRuleTable getDTRuleTable()
public SettableProperty<java.lang.Boolean> getOrderRulesByBucketProperty()
public boolean isOrderRulesByBucket()
public void setOrderRulesByBucket(boolean flag)
flag
- public void optimizeDimensionOrder()
public java.util.List<Gap> findGaps()
@Deprecated public void merge(boolean deep) throws SDKException
RuleSheet.compact()
Dimension.merge()
.
To merge all rules that share a DimensionNode (with choice of whether to merge actions), use
DimensionNode.merge(boolean)
.
To merge two sibling DimensionNodes into one with combined buckets, use
DimensionNode.merge(DimensionNode)
.deep
- if false then a single rule will remain after the merge.
If true then rules with identical action nodes will be merged. If there are no
actions, then the deep flag is irrelevent.SDKException
public void compact()
public void span()
public boolean canSpan()
public void unspan()
public boolean canUnspan()
@Deprecated public void merge(java.util.List<DimensionNode> nodes, boolean deep)
#merge(List)
, #compact(List)
, or #span(List)
nodes
- siblings to mergedeep
- whether to merge descendants of listed nodes that lead to the same actions
or just merge the nodes but not their descendants. When not deep, different actions may be merged
into an invalid DTActionNode.RuleSheet.merge(boolean)
public void merge(java.util.List<DimensionNode> nodes)
nodes
- public void span(java.util.List<DimensionNode> nodes)
nodes
- public boolean canSpan(java.util.List<DimensionNode> nodes)
nodes
- public void compact(java.util.List<DimensionNode> nodes)
nodes
- java.lang.IllegalArgumentException
- if nodes are not siblingspublic boolean canMerge(java.util.List<DimensionNode> nodes)
nodes
- public void split() throws SDKException
SDKException
public boolean removeActionlessRules()
public boolean removeActionlessRules(int minRuleIndex, int maxRuleIndex)
public SettableProperty<java.lang.Boolean> getAllowGapsProperty()
public boolean isAllowGaps()
public void setAllowGaps(boolean flag)
flag
- public TranslatedProperty getConflictPolicyProperty()
@Deprecated public boolean isAutoConflictResolution()
RuleSheet.getConflictPolicyProperty()
and test if the value is RuleSheet.CONFLICT_AUTO_OVERRIDE
@Deprecated public void setAutoConflictResolution(boolean flag)
RuleSheet.getConflictPolicyProperty()
and set the value to RuleSheet.CONFLICT_AUTO_OVERRIDE
or RuleSheet.CONFLICT_MANUAL
flag
- RuleSheet.isAutoConflictResolution()
public boolean hasNoConflict()
public boolean hasOverride()
public boolean hasRunBefore()
public boolean hasConflict()
hasConflict
in class DictionaryComponent<RuleSheet>
public java.lang.Object put(java.lang.String key, java.lang.Object value)
DictionaryComponent
A put() with either null key or null value throws a NullPointerException.
A put() with a key that is not a String throws a ClassCastException
A put() of a value that is not of the correct type for the key throws a ClassCastException.
Bean properties which have no set() method are read only, and cannot be modified using the put(). Attempting to do so throws a runtime IllegalArgumentException. PROP_ID, and PROP_*_SELECTED are always read only.
put
in interface java.util.Map<java.lang.String,java.lang.Object>
put
in class RuleCommon<RuleSheet>
key
- the key of the property to setvalue
- the value of the named property to setpublic SettableProperty<java.lang.Boolean> getVerticalOrientationProperty()
public boolean isVerticalOrientation()
public void SetVerticalOrientation(boolean isVertical)
isVertical
- is true if vertical and false otherwise