[ 
https://issues.apache.org/jira/browse/UNOMI-534?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Francois Gerthoffert updated UNOMI-534:
---------------------------------------
    Description: 
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:karaf \  --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

 

 

  was:
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

 

 


> 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
>            Priority: Major
>             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:karaf \  --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