Changes

MRO Objects (Client)

2,578 bytes added, 13:08, 12 December 2022
As a demonstration of this feature, see [[Media:Sequential_tasks_winx.mp4|this video]]. The relations between tasks are defined as in [[Media:Task_relations.png|this image]], starting at A1 and A2, which are not dependent on any other tasks. The lines (from left to right) indicate dependencies. This means that B2 has tasks A1 and A2 as its predecessors, for example.
 
 
==== Selective Task {{Version/WinXSince|4.2}}{{Version/XamarinSince|4.2}} ====
Sometimes, not all tasks have to be finished. More specifically, there might be tasks that have a predefined condition where you only need to finish a certain number of them. These tasks are known in {{UBIK}} as [[MROCLS_SELECTIVETASK|selective tasks]].
 
The idea is, a group of tasks can be defined as siblings to each other and they also share the same server configured threshold. When the number of finished tasks among that group exceeds the threshold, the entire group is considered as no longer necessary. When reflected in the overall status of the task owner(s), these tasks would appear as if they are finished.
 
{{Hint|Technically speaking, the finished status is completely independent from the not necessary status on a task. A selective task which is no longer necessary can be both finished or not yet finished. In other words, users don't have to finish a not necessary selective task, but they still can.}}
 
{{Hint|The precise status calculation for selective tasks and their task owners requires the knowledge of all siblings tasks. Imagine the rule indicates that 2 out of 3 tasks must be finished but the client only knows 1 in total and the others are only available at the server at that time. This makes it impossible to draw conclusions whether the task(s) should be necessary or not. Under such circumstances, the local status calculation is done as if these are just regular tasks.}}
 
{{Hint|Like with the other MRO objects, the client always choose the best available statuses for selective tasks to present to the users. More specifically, it uses the statuses calculated by the server when the client is not offline and there are no uncommitted local changes on the involved objects. Otherwise, it uses the locally calculated ones to the best of its knowledge.}}
 
A task can also be a selective and a sequential one at the same time. In such a case, the selective nature of the sibling tasks will affect the way the task sequence completes.
 
For example, task A1, A2 and A3 are 3 selective sibling tasks and only 1 of them needs to be finished. At the same time, they are all predecessors of task B. Normally, all predecessors must be finished (and locked) before task B becomes the next one in the sequence and therefore unlocked. In this case, however, as soon as one of the predecessors is finished, all three become unnecessary (and locked) and task B unlocks as a result of that.
[[Category:Android|MRO Objects (UBIK WinX)]]
[[Category:WinX|MRO Objects (UBIK WinX)]]
[[Category:Client|MRO Objects (Client)]]
[[Category:Xamarin|MRO Objects (Client)]]