685: attributeValueDate date;
686: errorCode integer;
687: errorMessage ame_util.longestStringType;
688: headerLevelCondition boolean;
689: includeLowerLimit ame_conditions.include_lower_limit%type;
690: includeUpperLimit ame_conditions.include_upper_limit%type;
691: parameterOne ame_conditions.parameter_one%type;
692: parameterOneDate date;
693: parameterOneNumber number;
686: errorCode integer;
687: errorMessage ame_util.longestStringType;
688: headerLevelCondition boolean;
689: includeLowerLimit ame_conditions.include_lower_limit%type;
690: includeUpperLimit ame_conditions.include_upper_limit%type;
691: parameterOne ame_conditions.parameter_one%type;
692: parameterOneDate date;
693: parameterOneNumber number;
694: parameterThree ame_conditions.parameter_three%type;
687: errorMessage ame_util.longestStringType;
688: headerLevelCondition boolean;
689: includeLowerLimit ame_conditions.include_lower_limit%type;
690: includeUpperLimit ame_conditions.include_upper_limit%type;
691: parameterOne ame_conditions.parameter_one%type;
692: parameterOneDate date;
693: parameterOneNumber number;
694: parameterThree ame_conditions.parameter_three%type;
695: parameterTwo ame_conditions.parameter_two%type;
690: includeUpperLimit ame_conditions.include_upper_limit%type;
691: parameterOne ame_conditions.parameter_one%type;
692: parameterOneDate date;
693: parameterOneNumber number;
694: parameterThree ame_conditions.parameter_three%type;
695: parameterTwo ame_conditions.parameter_two%type;
696: parameterTwoDate date;
697: parameterTwoNumber number;
698: begin
691: parameterOne ame_conditions.parameter_one%type;
692: parameterOneDate date;
693: parameterOneNumber number;
694: parameterThree ame_conditions.parameter_three%type;
695: parameterTwo ame_conditions.parameter_two%type;
696: parameterTwoDate date;
697: parameterTwoNumber number;
698: begin
699: /* Check whether the condition is on a header-level attribute. */
3283: (processProductionRulesIn = ame_util.booleanTrue or
3284: ame_rules.rule_type <> ame_util.productionRuleType) and
3285: not exists (select *
3286: from
3287: ame_conditions,
3288: ame_condition_usages
3289: where
3290: ame_conditions.condition_type <> ame_util.listModConditionType and
3291: ame_conditions.condition_id = ame_condition_usages.condition_id and
3286: from
3287: ame_conditions,
3288: ame_condition_usages
3289: where
3290: ame_conditions.condition_type <> ame_util.listModConditionType and
3291: ame_conditions.condition_id = ame_condition_usages.condition_id and
3292: ame_condition_usages.rule_id = ame_rules.rule_id and
3293: engEffectiveRuleDate between
3294: ame_conditions.start_date and
3287: ame_conditions,
3288: ame_condition_usages
3289: where
3290: ame_conditions.condition_type <> ame_util.listModConditionType and
3291: ame_conditions.condition_id = ame_condition_usages.condition_id and
3292: ame_condition_usages.rule_id = ame_rules.rule_id and
3293: engEffectiveRuleDate between
3294: ame_conditions.start_date and
3295: nvl(ame_conditions.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3290: ame_conditions.condition_type <> ame_util.listModConditionType and
3291: ame_conditions.condition_id = ame_condition_usages.condition_id and
3292: ame_condition_usages.rule_id = ame_rules.rule_id and
3293: engEffectiveRuleDate between
3294: ame_conditions.start_date and
3295: nvl(ame_conditions.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3296: engEffectiveRuleDate between
3297: ame_condition_usages.start_date and
3298: nvl(ame_condition_usages.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3291: ame_conditions.condition_id = ame_condition_usages.condition_id and
3292: ame_condition_usages.rule_id = ame_rules.rule_id and
3293: engEffectiveRuleDate between
3294: ame_conditions.start_date and
3295: nvl(ame_conditions.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3296: engEffectiveRuleDate between
3297: ame_condition_usages.start_date and
3298: nvl(ame_condition_usages.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3299: /* Avoids second fetch otherwise required by ANSI standard to check for too many rows. */
3523: condition_id in
3524: (select ame_condition_usages.condition_id
3525: from
3526: ame_attributes,
3527: ame_conditions,
3528: ame_condition_usages,
3529: ame_rule_usages
3530: where
3531: ame_attributes.attribute_type = ame_util.stringAttributeType and
3528: ame_condition_usages,
3529: ame_rule_usages
3530: where
3531: ame_attributes.attribute_type = ame_util.stringAttributeType and
3532: ame_attributes.attribute_id = ame_conditions.attribute_id and
3533: ame_conditions.condition_id = ame_condition_usages.condition_id and
3534: ame_condition_usages.rule_id = ame_rule_usages.rule_id and
3535: ame_rule_usages.item_id = engAmeApplicationId and
3536: engEffectiveRuleDate between
3529: ame_rule_usages
3530: where
3531: ame_attributes.attribute_type = ame_util.stringAttributeType and
3532: ame_attributes.attribute_id = ame_conditions.attribute_id and
3533: ame_conditions.condition_id = ame_condition_usages.condition_id and
3534: ame_condition_usages.rule_id = ame_rule_usages.rule_id and
3535: ame_rule_usages.item_id = engAmeApplicationId and
3536: engEffectiveRuleDate between
3537: ame_attributes.start_date and
3536: engEffectiveRuleDate between
3537: ame_attributes.start_date and
3538: nvl(ame_attributes.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3539: engEffectiveRuleDate between
3540: ame_conditions.start_date and
3541: nvl(ame_conditions.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3542: engEffectiveRuleDate between
3543: ame_condition_usages.start_date and
3544: nvl(ame_condition_usages.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3537: ame_attributes.start_date and
3538: nvl(ame_attributes.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3539: engEffectiveRuleDate between
3540: ame_conditions.start_date and
3541: nvl(ame_conditions.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3542: engEffectiveRuleDate between
3543: ame_condition_usages.start_date and
3544: nvl(ame_condition_usages.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3545: engEffectiveRuleDate between
3568: productionRulePriorityModeIn in varchar2,
3569: productionRuleThresholdIn in integer,
3570: headerItemClassIdIn in integer) is
3571: select
3572: ame_conditions.condition_id condition_id,
3573: ame_conditions.condition_type condition_type,
3574: ame_conditions.attribute_id attribute_id,
3575: ame_conditions.parameter_one parameter_one,
3576: ame_conditions.parameter_two parameter_two,
3569: productionRuleThresholdIn in integer,
3570: headerItemClassIdIn in integer) is
3571: select
3572: ame_conditions.condition_id condition_id,
3573: ame_conditions.condition_type condition_type,
3574: ame_conditions.attribute_id attribute_id,
3575: ame_conditions.parameter_one parameter_one,
3576: ame_conditions.parameter_two parameter_two,
3577: ame_conditions.parameter_three parameter_three,
3570: headerItemClassIdIn in integer) is
3571: select
3572: ame_conditions.condition_id condition_id,
3573: ame_conditions.condition_type condition_type,
3574: ame_conditions.attribute_id attribute_id,
3575: ame_conditions.parameter_one parameter_one,
3576: ame_conditions.parameter_two parameter_two,
3577: ame_conditions.parameter_three parameter_three,
3578: ame_conditions.include_lower_limit,
3571: select
3572: ame_conditions.condition_id condition_id,
3573: ame_conditions.condition_type condition_type,
3574: ame_conditions.attribute_id attribute_id,
3575: ame_conditions.parameter_one parameter_one,
3576: ame_conditions.parameter_two parameter_two,
3577: ame_conditions.parameter_three parameter_three,
3578: ame_conditions.include_lower_limit,
3579: ame_conditions.include_upper_limit,
3572: ame_conditions.condition_id condition_id,
3573: ame_conditions.condition_type condition_type,
3574: ame_conditions.attribute_id attribute_id,
3575: ame_conditions.parameter_one parameter_one,
3576: ame_conditions.parameter_two parameter_two,
3577: ame_conditions.parameter_three parameter_three,
3578: ame_conditions.include_lower_limit,
3579: ame_conditions.include_upper_limit,
3580: ame_condition_usages.rule_id rule_id,
3573: ame_conditions.condition_type condition_type,
3574: ame_conditions.attribute_id attribute_id,
3575: ame_conditions.parameter_one parameter_one,
3576: ame_conditions.parameter_two parameter_two,
3577: ame_conditions.parameter_three parameter_three,
3578: ame_conditions.include_lower_limit,
3579: ame_conditions.include_upper_limit,
3580: ame_condition_usages.rule_id rule_id,
3581: ame_rules.rule_type rule_type,
3574: ame_conditions.attribute_id attribute_id,
3575: ame_conditions.parameter_one parameter_one,
3576: ame_conditions.parameter_two parameter_two,
3577: ame_conditions.parameter_three parameter_three,
3578: ame_conditions.include_lower_limit,
3579: ame_conditions.include_upper_limit,
3580: ame_condition_usages.rule_id rule_id,
3581: ame_rules.rule_type rule_type,
3582: nvl(ame_rules.item_class_id,
3575: ame_conditions.parameter_one parameter_one,
3576: ame_conditions.parameter_two parameter_two,
3577: ame_conditions.parameter_three parameter_three,
3578: ame_conditions.include_lower_limit,
3579: ame_conditions.include_upper_limit,
3580: ame_condition_usages.rule_id rule_id,
3581: ame_rules.rule_type rule_type,
3582: nvl(ame_rules.item_class_id,
3583: headerItemClassIdIn) rule_item_class,
3584: ame_rule_usages.priority priority,
3585: ame_rule_usages.approver_category
3586: from
3587: ame_attributes,
3588: ame_conditions,
3589: ame_condition_usages,
3590: ame_rules,
3591: ame_rule_usages
3592: where
3589: ame_condition_usages,
3590: ame_rules,
3591: ame_rule_usages
3592: where
3593: ame_attributes.attribute_id = ame_conditions.attribute_id and
3594: ame_conditions.condition_type <> ame_util.listModConditionType and
3595: ame_conditions.condition_id = ame_condition_usages.condition_id and
3596: ame_condition_usages.rule_id = ame_rules.rule_id and
3597: ame_rules.rule_id = ame_rule_usages.rule_id and
3590: ame_rules,
3591: ame_rule_usages
3592: where
3593: ame_attributes.attribute_id = ame_conditions.attribute_id and
3594: ame_conditions.condition_type <> ame_util.listModConditionType and
3595: ame_conditions.condition_id = ame_condition_usages.condition_id and
3596: ame_condition_usages.rule_id = ame_rules.rule_id and
3597: ame_rules.rule_id = ame_rule_usages.rule_id and
3598: ame_rule_usages.item_id = engAmeApplicationId and
3591: ame_rule_usages
3592: where
3593: ame_attributes.attribute_id = ame_conditions.attribute_id and
3594: ame_conditions.condition_type <> ame_util.listModConditionType and
3595: ame_conditions.condition_id = ame_condition_usages.condition_id and
3596: ame_condition_usages.rule_id = ame_rules.rule_id and
3597: ame_rules.rule_id = ame_rule_usages.rule_id and
3598: ame_rule_usages.item_id = engAmeApplicationId and
3599: (processPrioritiesIn = ame_util.booleanFalse or
3626: engEffectiveRuleDate between
3627: ame_attributes.start_date and
3628: nvl(ame_attributes.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3629: engEffectiveRuleDate between
3630: ame_conditions.start_date and
3631: nvl(ame_conditions.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3632: engEffectiveRuleDate between
3633: ame_condition_usages.start_date and
3634: nvl(ame_condition_usages.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3627: ame_attributes.start_date and
3628: nvl(ame_attributes.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3629: engEffectiveRuleDate between
3630: ame_conditions.start_date and
3631: nvl(ame_conditions.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3632: engEffectiveRuleDate between
3633: ame_condition_usages.start_date and
3634: nvl(ame_condition_usages.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
3635: engEffectiveRuleDate between
4421: -- Condition to check whether the attribute is used in the rule
4422: exists
4423: (
4424: select 1
4425: from ame_conditions,
4426: ame_condition_usages,
4427: ame_rules,
4428: ame_rule_usages
4429: where ame_conditions.attribute_id = ame_attributes.attribute_id
4425: from ame_conditions,
4426: ame_condition_usages,
4427: ame_rules,
4428: ame_rule_usages
4429: where ame_conditions.attribute_id = ame_attributes.attribute_id
4430: and ame_conditions.condition_id = ame_condition_usages.condition_id
4431: and ame_condition_usages.rule_id = ame_rules.rule_id
4432: and ame_rules.rule_id = ame_rule_usages.rule_id
4433: and ame_rule_usages.item_id = applicationIdIn
4426: ame_condition_usages,
4427: ame_rules,
4428: ame_rule_usages
4429: where ame_conditions.attribute_id = ame_attributes.attribute_id
4430: and ame_conditions.condition_id = ame_condition_usages.condition_id
4431: and ame_condition_usages.rule_id = ame_rules.rule_id
4432: and ame_rules.rule_id = ame_rule_usages.rule_id
4433: and ame_rule_usages.item_id = applicationIdIn
4434: and ((engEffectiveRuleDate between ame_rules.start_date
4434: and ((engEffectiveRuleDate between ame_rules.start_date
4435: and nvl(ame_rules.end_date - (1/86400), engEffectiveRuleDate)))
4436: and ((engEffectiveRuleDate between ame_rule_usages.start_date
4437: and nvl(ame_rule_usages.end_date - (1/86400), engEffectiveRuleDate)))
4438: and engEffectiveRuleDate between ame_conditions.start_date
4439: and nvl(ame_conditions.end_date - (1/86400), engEffectiveRuleDate)
4440: and ((engEffectiveRuleDate between ame_condition_usages.start_date
4441: and nvl(ame_condition_usages.end_date - (1/86400), engEffectiveRuleDate)))
4442: union
4435: and nvl(ame_rules.end_date - (1/86400), engEffectiveRuleDate)))
4436: and ((engEffectiveRuleDate between ame_rule_usages.start_date
4437: and nvl(ame_rule_usages.end_date - (1/86400), engEffectiveRuleDate)))
4438: and engEffectiveRuleDate between ame_conditions.start_date
4439: and nvl(ame_conditions.end_date - (1/86400), engEffectiveRuleDate)
4440: and ((engEffectiveRuleDate between ame_condition_usages.start_date
4441: and nvl(ame_condition_usages.end_date - (1/86400), engEffectiveRuleDate)))
4442: union
4443: select 1
7630: errorCode integer;
7631: errorMessage ame_util.longestStringType;
7632: invalidNameException exception;
7633: tempRuleKey ame_rules.rule_key%type;
7634: parameterOne ame_conditions.parameter_one%type;
7635: parameterTwo ame_conditions.parameter_two%type;
7636: begin
7637: /* Checked for cached values. */
7638: if(not engLMParameterOnes.exists(ruleIdIn)) then
7631: errorMessage ame_util.longestStringType;
7632: invalidNameException exception;
7633: tempRuleKey ame_rules.rule_key%type;
7634: parameterOne ame_conditions.parameter_one%type;
7635: parameterTwo ame_conditions.parameter_two%type;
7636: begin
7637: /* Checked for cached values. */
7638: if(not engLMParameterOnes.exists(ruleIdIn)) then
7639: /* Select the values, as they were not cached. */
7637: /* Checked for cached values. */
7638: if(not engLMParameterOnes.exists(ruleIdIn)) then
7639: /* Select the values, as they were not cached. */
7640: select
7641: ame_conditions.parameter_one,
7642: ame_conditions.parameter_two
7643: into
7644: parameterOne,
7645: parameterTwo
7638: if(not engLMParameterOnes.exists(ruleIdIn)) then
7639: /* Select the values, as they were not cached. */
7640: select
7641: ame_conditions.parameter_one,
7642: ame_conditions.parameter_two
7643: into
7644: parameterOne,
7645: parameterTwo
7646: from
7643: into
7644: parameterOne,
7645: parameterTwo
7646: from
7647: ame_conditions,
7648: ame_condition_usages
7649: where
7650: ame_condition_usages.rule_id = ruleIdIn and
7651: ame_condition_usages.condition_id = ame_conditions.condition_id and
7647: ame_conditions,
7648: ame_condition_usages
7649: where
7650: ame_condition_usages.rule_id = ruleIdIn and
7651: ame_condition_usages.condition_id = ame_conditions.condition_id and
7652: ame_conditions.condition_type = ame_util.listModConditionType and
7653: engEffectiveRuleDate between
7654: ame_conditions.start_date and
7655: nvl(ame_conditions.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
7648: ame_condition_usages
7649: where
7650: ame_condition_usages.rule_id = ruleIdIn and
7651: ame_condition_usages.condition_id = ame_conditions.condition_id and
7652: ame_conditions.condition_type = ame_util.listModConditionType and
7653: engEffectiveRuleDate between
7654: ame_conditions.start_date and
7655: nvl(ame_conditions.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
7656: engEffectiveRuleDate between
7650: ame_condition_usages.rule_id = ruleIdIn and
7651: ame_condition_usages.condition_id = ame_conditions.condition_id and
7652: ame_conditions.condition_type = ame_util.listModConditionType and
7653: engEffectiveRuleDate between
7654: ame_conditions.start_date and
7655: nvl(ame_conditions.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
7656: engEffectiveRuleDate between
7657: ame_condition_usages.start_date and
7658: nvl(ame_condition_usages.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
7651: ame_condition_usages.condition_id = ame_conditions.condition_id and
7652: ame_conditions.condition_type = ame_util.listModConditionType and
7653: engEffectiveRuleDate between
7654: ame_conditions.start_date and
7655: nvl(ame_conditions.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
7656: engEffectiveRuleDate between
7657: ame_condition_usages.start_date and
7658: nvl(ame_condition_usages.end_date - ame_util.oneSecond, engEffectiveRuleDate) and
7659: rownum < 2; /* Avoids second fetch otherwise required by ANSI standard to check for too many rows. */