[
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)