XOR is defined as:
|A||B||A XOR B|
When user uses XOR Join Node, it generates true result after only 1 branch submit result. I would expect it waits for both branches to give results (true or false) to apply XOR definition.
In my example, each branch going from both Task nodes is set to True, which means XOR should apply 1|1 = 0 and then from XOR Join it should take False branch to complete cycle, which means you should get "FALSE result" Notification
- Navigate to Control panel -> Configuration -> Workflow
- Create new workflow (see kaleo_creating_xor.gif)
- Add Fork node, 2x Task Node, XOR Join node, State node and connect them according to attached image
- Set notifications to both Tasks nodes, State node and EndNode so you can check workflow process. Set it to Role - Regular - Administrator
- Hit Publish, workflow is saved correctly
- See kaleo_using_xor.gif for next steps:
- Assign created workflow scheme to some content, eg. Blogs
- Create new blog
- Two notification should appear in Notifications
- Select one of them, from kebab menu select branch you created in Designer (approve1) and approve it
- Check Notifications again, there should be result from True finish branch (wrong result)
- System didn't wait for second result from Notify no. 2, it resulted in "TRUE result" straight away
Expected result: System waits for second branch to provide result so it can calculate correctly XOR value and decide which result branch to take
Actual result: System takes only one result from task branch to generate final result. It leads to take True branch as final result instead of False branch, which this example is set to.
Note: Simple "Join Node" works as expected and waits for both results.
- CentOS, MySQL 5.6, Tomcat 9.0.6, FF 59.0.2
- 7.1.x nightly Master git ID: 7cb7a05b2d4e4f2b1b7a63a4e22805b758b89dbb
Fix priority: S3 + L3 = 3