Francois Gerthoffert created UNOMI-534:
------------------------------------------

             Summary: Different condition handling between search and rules
                 Key: UNOMI-534
                 URL: https://issues.apache.org/jira/browse/UNOMI-534
             Project: Apache Unomi
          Issue Type: Task
    Affects Versions: 1.6.0
            Reporter: Francois Gerthoffert
             Fix For: 1.6.0


Hi,


I used the search endpoint to create/verify the condition before creating the 
rule, but while I was able to return events using the search endpoints for a 
particular condition, I spent quite some time trying to understand why the same 
condition added to a rule would not match.

Steps to reproduce (also here: 
https://gist.github.com/Fgerthoffert/7069e82906b030a1e63a6d006c54ce7d):

 - Create an event and verify it is showing up with event-tail

 
{code:java}
curl 'http://localhost:8181/eventcollector' \  -H 'Accept: application/json' \  
--data-raw '{    "events":[{      "eventType":"click",      "scope":"digitall", 
     "target":{        "scope":"digitall",        "itemId":"model-y",        
"itemType":"car"      },      "source":{        "scope":"digitall",        
"itemId":"US 66",        "itemType":"road"      }    }],    
"sessionId":"a37eca9f-b8a4-4e65-a8b7-79d6da48d566"}' {code}
 

- Search for that event using eventPropertyCondition

 
{code:java}
curl --request POST \  --url http://localhost:8181/cxs/events/search \  --user 
karaf:karaf \  --header 'Content-Type: application/json' \  --data '{    
"limit": 10,    "condition": {      "type": "eventPropertyCondition",           
"parameterValues" : {               "propertyName" : "target.itemType",         
      "comparisonOperator" : "equals",               "propertyValue" : "car"    
        }        }}' {code}
The event you just submitted should be part of the results.

 

- Create a rule using that same eventPropertyCondition 

 
{code:java}
curl --request POST \  --url http://localhost:8181/cxs/rules \  --user 
karaf:jcustomerP@55 \  --header 'Content-Type: application/json' \  --data '{  
"metadata": {    "id": "testGroovyActionRule",    "name": "Test Groovy Action 
Rule",    "description": "A sample rule to test Groovy actions"  },  
"condition": {    "type": "eventPropertyCondition",    "parameterValues" : {    
   "propertyName" : "target.itemType",       "comparisonOperator" : "equals",   
    "propertyValue" : "interest"    }  },  "actions": [    {      "type": 
"evaluateProfileAge",      "parameterValues": {}    }  ]}' {code}
- Open an ssh connection to Karaf and use rule-tail

 

- Re-send the same event, you should NOT see any rule matching (this is the 
"issue")

- Update the rule you just created
{code:java}
curl --request POST \
  --url http://localhost:8181/cxs/rules \
  --user karaf:jcustomerP@55 \
  --header 'Content-Type: application/json' \
  --data '{
  "metadata": {
    "id": "testGroovyActionRule",
    "name": "Test Groovy Action Rule",
    "description": "A sample rule to test Groovy actions"
  },
  "condition": {
    "type": "eventTypeCondition",
    "parameterValues" : {
       "eventTypeId" : "click"
    }
  },
  "actions": [
    {
      "type": "evaluateProfileAge",
      "parameterValues": {}
    }
  ]
}' {code}
- Re-send the same event, you SHOULD see any rule matching

 

 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to