Uploaded image for project: 'JBoss BRMS Platform'
  1. JBoss BRMS Platform
  2. RHBRMS-2843

[GSS](6.4.z)Rule sporadically fires when conditions do not match

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 6.4.5, 6.4.5.GA
    • 6.4.1
    • BRE
    • None
    • BRMS 6.4.1 with one-off patch RHBRMS-2743, running embedded (just drools core and supporting libraries), rules are deployed in binary form

    • CR2
    • Hide

      No specific steps at this point. Will update with reproducer from customer.

      Show
      No specific steps at this point. Will update with reproducer from customer.

      What problem/issue/behavior are you having trouble with? What do you expect to see?

      It started with developers reported that they see different results when running the same test case, the same rules in different environments. We investigated and found out a rule that was not supposed to fire actually fired on a number of servers with the same test case. First, we believe it could have been environment configuration issues but later on we found out it could also happen on our local machines as well and on our dev servers as well. One thing we noticed was that it happens on very first transaction and once it happens it continue to happen till the JVM is recycled. Below is an example of a rule under normal circumstances should NOT fire but it does fire sporadically between server bounces. We believe issue has something to do the condition highlighted in yellow below. Fico Scores from both operands have the same value (769) but somehow that expression still evaluated to true.
      $policySet :
      PolicySet( parentId == $transactionDetail.myId
      , FICOScore != $FICOScore
      , firings not contains "RS7513.1.7_RF_GROUP_SUFFIX_IDENT" )

      Side Note When rule becomes corrupted, it seems like the comparison operator being flipped from != to ==.
      RULE:
      WHEN InvokeDDServices . LendingTransaction . TransactionDetail . PolicySet . PolicySetIdentifier . LienPriority IS 1st Lien
      AND InvokeDDServices . LendingTransaction . LendingProduct . DecisionResults . FICOScore DOES NOT EQUAL InvokeDDServices . LendingTransaction . TransactionDetail . PolicySet . FICOScore

      ARGenT Log:
      SET invokeDDServices.lendingTransactionList.lendingTransaction.transactionDetail.policySetList.policySet.FICOScore=769
      RULE FIRED : RS7544.1.6_RF6365_341_50313095 (Determine Decision Credit Score for Policy Set) $creditScoreValue=769, $invokeDDServicesInvokeDDServicesRequest, $lendingTransactionLoanFile, $policySetPolicySet, $scoreScore, $transactionDetailTransactionDetail
      ====================================================================================
      ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

      SET invokeDDServices.lendingTransactionList.lendingTransaction.transactionDetail.policySetList.policySet.reviewLevel=No Decision
      SET invokeDDServices.lendingTransactionList.lendingTransaction.transactionDetail.policySetList.policySet.stipulationList.stipulation.messageId=36007
      RULE FIRED : RS7513.1.7_RF6365_341_50313096 (Compare Input Credit Score to Determined Credit Score) $FICOScore=769, $decisionResultsDecisionResultsInfo, $featuresFeatures, $invokeDDServicesInvokeDDServicesRequest, $lendingProductLendingProduct, $lendingTransactionLoanFile, $lienPriority_1=1, $policySetPolicySet, $policySetIdentifierPolicySetIdentifier, $transactionDetailTransactionDetail
      SET invokeDDServices.lendingTransactionList.lendingTransaction.transactionDetail.policySetList.policySet.serviceFlowCode=Post Rules Processing

      Rule Code:

      RS7513.1.7_
      rule "RS7513.1.7_RF_GROUP_SUFFIX_IDENT"
      dialect "java"
      when

      $invokeDDServices :
      InvokeDDServicesRequest( )

      $lendingTransaction :
      LoanFile( parentId == $invokeDDServices.myId )

      $lendingProduct :
      LendingProduct( parentId == $lendingTransaction.myId )

      $features :
      Features( parentId == $lendingProduct.myId
      , $lienPriority_1 : lienPriority )

      $decisionResults :
      DecisionResultsInfo( parentId == $lendingProduct.myId
      , $FICOScore : FICOScore )

      $transactionDetail :
      TransactionDetail( parentId == $lendingTransaction.myId )

      $policySet :
      PolicySet( parentId == $transactionDetail.myId
      , FICOScore != $FICOScore
      , firings not contains "RS7513.1.7_RF_GROUP_SUFFIX_IDENT" )

      $policySetIdentifier :
      PolicySetIdentifier( parentId == $policySet.myId
      , lienPriority == 1
      , lienPriority == $lienPriority_1 // JOIN RULE
      )

      then
      $policySet.setReviewLevel("No Decision");
      WorkingObjectStipulation stipulation = $policySet.addNewStipulation();
      stipulation.setMessageId("36007");
      insert(stipulation);
      $policySet.getFirings().add("RS7513.1.7_RF_GROUP_SUFFIX_IDENT");
      update($policySet);
      end

      Where are you experiencing the behavior? What environment?

      Sporadically in all environments DEVs and Locals

            mfusco@redhat.com Mario Fusco
            rhn-support-erismith Erik Smith
            Archiver:
            rhn-support-ceverson Clark Everson
            Jiří Locker Jiří Locker
            Jiří Locker Jiří Locker

              Created:
              Updated:
              Resolved:
              Archived: