Testing an ODM rule application

An easy way to test the rules is to use SoapUI as the execution client.

Procedure

  1. Obtain the WSDL from the ODM Rule Execution Server by using the Explorer tab to drill from the RuleApp into the RuleSet. When the ruleset is displayed, use the Retrieve HTDS Description File link to obtain the WSDL file.
  2. After the WSDL is obtained, create a SoapUI Test project, using the WSDL as the definition and allowing SoapUI to generate a test harness.  The following screen capture shows the SoapUI project being created.
  3. Create a new request or modify one that was created, providing contents similar to what is shown in the following screen capture. For example, the source of a request for a sample ruleApp is as follows:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:med="http://www.ibm.com/rules/decisionservice/Medical_Provider_Fraud_RuleApp/Medical_Provider_Fraud_Rules_RuleSet" xmlns:par="http://www.ibm.com/rules/decisionservice/Medical_Provider_Fraud_RuleApp/Medical_Provider_Fraud_Rules_RuleSet/param" xmlns:prov="Provider_Pedigree-wodm-io">
           <soapenv:Header/>
           <soapenv:Body>
              <med:Medical_Provider_Fraud_Rules_RuleSetRequest>
                 <!--Optional:-->
                 <med:DecisionID>1</med:DecisionID>
                 <par:InputData>
                    <prov:inputData>
                       <!--Zero or more repetitions:-->
                       <Provider_Pedigree>
                          <OBJECT_ID>1</OBJECT_ID>
                          <PARTY_NAME>Foo Bar</PARTY_NAME>
                          <PARTY_ASSESSED_VALUE>888</PARTY_ASSESSED_VALUE>
                          <INDIVIDUAL_BIRTH_DATE>1960-01-01</INDIVIDUAL_BIRTH_DATE>
                          <INDIVIDUAL_DEATH_DATE>2099-12-12T00:00:00</INDIVIDUAL_DEATH_DATE>
                          <HAS_PEP_FAMILY_MEMBER>1</HAS_PEP_FAMILY_MEMBER>
                          <HAS_RCA>1</HAS_RCA>
                          <HAS_SIP>0</HAS_SIP>
                          <LAW_ENFORCEMENT_ALERT_COUNT>10</LAW_ENFORCEMENT_ALERT_COUNT>
                          <PRIOR_DECLINES_COUNT>2</PRIOR_DECLINES_COUNT>
                          <PRIOR_TXN_ALERT_COUNT>3</PRIOR_TXN_ALERT_COUNT>
                          <COUNT_OF_PARTY_ALIASES>5</COUNT_OF_PARTY_ALIASES>
                       </Provider_Pedigree>
                    </prov:inputData>
                 </par:InputData>
              </med:Medical_Provider_Fraud_Rules_RuleSetRequest>
           </soapenv:Body>
        </soapenv:Envelope>

    Within SoapUI, the project now looks similar to:

    On execution of the rule application with the provided input, a result similar to the following is produced:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ds="http://www.ibm.com/rules/decisionservice/Medical_Provider_Fraud_RuleApp/Medical_Provider_Fraud_Rules_RuleSet">
           <soapenv:Body>
              <Medical_Provider_Fraud_Rules_RuleSetResponse xmlns="http://www.ibm.com/rules/decisionservice/Medical_Provider_Fraud_RuleApp/Medical_Provider_Fraud_Rules_RuleSet">
                 <DecisionID>1</DecisionID>
                 <OutputData xmlns="http://www.ibm.com/rules/decisionservice/Medical_Provider_Fraud_RuleApp/Medical_Provider_Fraud_Rules_RuleSet/param">
                    <ns0:outputData xmlns:ns0="Provider_Pedigree-wodm-io" xmlns:ns1="http://com.ibm.cf.CFCommonTypes/CFCommonTypes">
                       <resultData xmlns="">
                          <focalObjectRef objectType="party" objectID="1"/>
                          <score>100.0</score>
                          <context>default</context>
                       </resultData>
                    </ns0:outputData>
                 </OutputData>
              </Medical_Provider_Fraud_Rules_RuleSetResponse>
           </soapenv:Body>
        </soapenv:Envelope>