Если-то-иначе не работает хорошо для сравнения с 0

Я написал правило вроде

if
    the period of 'Request' is more than 0
then
    set the date of 'Request' to due_date - 1 Day;
else
    set the date of 'Request' to due_date ;

для значений периода, отличных от 0, он работает нормально, но когда значение периода равно 0, он просто пропускает все правило, то есть не переходит ни к тому, ни к другому. Я использую ODM 8.6 и тестирую файл DVS.

Я пробовал то же самое в ODM 8.5, и там все работает нормально, пожалуйста, помогите решить эту проблему.


person Ankit    schedule 02.12.2014    source источник
comment
Правильна ли точка с запятой после части then, или она преждевременно заканчивает оператор if-then?   -  person chiccodoro    schedule 02.12.2014
comment
@chiccodoro это правильно, также это могло бы быть, если бы я поставил точку с запятой после части «если», но в случае 0 он не должен рассматривать часть, независимо от того, что это такое   -  person Ankit    schedule 02.12.2014
comment
Я не понимаю сути, так как я не слишком хорошо знаю odm/ilog/jrules. Однако я считаю, что часть if оценивается всегда, даже если период равен 0. Но оценка имеет другой результат. Кроме того, я предполагаю, что точка с запятой является частью синтаксиса, а не частью выражения, поэтому она влияет на то, как правило анализируется и обрабатывается задолго до того, как оно будет оценено для каких-либо данных. Если точка с запятой после части then завершает правило, а часть else игнорируется при синтаксическом анализе, это объясняет, почему в случае else ничего не происходит.   -  person chiccodoro    schedule 02.12.2014
comment
@chiccodoro Это не так, мы получаем ошибку, когда точка с запятой удалена. Также я должен упомянуть, что здесь стоит точка.   -  person Ankit    schedule 03.12.2014
comment
Понимаю. Мне жаль, что я не могу помочь...   -  person chiccodoro    schedule 03.12.2014


Ответы (1)


Вы пробовали с последним фикспаком?

В общем случае использование конструкции else для правил является плохим проектом. Попробуйте разделить правило на 2 разных правила:

  • для периода 'Запрос'>0, и
  • за период «Заявки»‹0.
person z_blue    schedule 10.04.2015